diff --git a/cmd/revad/runtime/runtime.go b/cmd/revad/runtime/runtime.go index d37732eb9bb..29584e36265 100644 --- a/cmd/revad/runtime/runtime.go +++ b/cmd/revad/runtime/runtime.go @@ -19,6 +19,7 @@ package runtime import ( + "context" "fmt" "io" "log" @@ -29,6 +30,7 @@ import ( "strings" "github.com/cs3org/reva/cmd/revad/internal/grace" + "github.com/cs3org/reva/pkg/appctx" "github.com/cs3org/reva/pkg/logger" "github.com/cs3org/reva/pkg/registry/memory" "github.com/cs3org/reva/pkg/rgrpc" @@ -184,10 +186,16 @@ func handlePIDFlag(l *zerolog.Logger, pidFile string) (*grace.Watcher, error) { return w, nil } +func ctxWithInitLogger(ctx context.Context, log *zerolog.Logger, pkg string) context.Context { + l := log.With().Str("context", "init").Str("pkg", pkg).Logger() + return appctx.WithLogger(ctx, &l) +} + func start(mainConf map[string]interface{}, servers map[string]grace.Server, listeners map[string]net.Listener, log *zerolog.Logger, watcher *grace.Watcher) { if isEnabledHTTP(mainConf) { go func() { - if err := servers["http"].(*rhttp.Server).Start(listeners["http"]); err != nil { + ctx := ctxWithInitLogger(context.Background(), log, "http") + if err := servers["http"].(*rhttp.Server).Start(ctx, listeners["http"]); err != nil { log.Error().Err(err).Msg("error starting the http server") watcher.Exit(1) } @@ -195,7 +203,8 @@ func start(mainConf map[string]interface{}, servers map[string]grace.Server, lis } if isEnabledGRPC(mainConf) { go func() { - if err := servers["grpc"].(*rgrpc.Server).Start(listeners["grpc"]); err != nil { + ctx := ctxWithInitLogger(context.Background(), log, "grpc") + if err := servers["grpc"].(*rgrpc.Server).Start(ctx, listeners["grpc"]); err != nil { log.Error().Err(err).Msg("error starting the grpc server") watcher.Exit(1) } @@ -264,7 +273,8 @@ func getHTTPServer(conf interface{}, l *zerolog.Logger) (*rhttp.Server, error) { return s, nil } -// adjustCPU parses string cpu and sets GOMAXPROCS +// adjustCPU parses string cpu and sets GOMAXPROCS +// // according to its value. It accepts either // a number (e.g. 3) or a percent (e.g. 50%). // Default is to use all available cores. diff --git a/internal/grpc/interceptors/eventsmiddleware/events.go b/internal/grpc/interceptors/eventsmiddleware/events.go index d7603e74c52..d3a37d253dd 100644 --- a/internal/grpc/interceptors/eventsmiddleware/events.go +++ b/internal/grpc/interceptors/eventsmiddleware/events.go @@ -42,6 +42,7 @@ func init() { // NewUnary returns a new unary interceptor that emits events when needed // no lint because of the switch statement that should be extendable +// //nolint:gocritic func NewUnary(m map[string]interface{}) (grpc.UnaryServerInterceptor, int, error) { publisher, err := publisherFromConfig(m) diff --git a/internal/grpc/services/applicationauth/applicationauth.go b/internal/grpc/services/applicationauth/applicationauth.go index cccf72e8e28..04c47ad4bce 100644 --- a/internal/grpc/services/applicationauth/applicationauth.go +++ b/internal/grpc/services/applicationauth/applicationauth.go @@ -56,9 +56,9 @@ func (s *service) Register(ss *grpc.Server) { appauthpb.RegisterApplicationsAPIServer(ss, s) } -func getAppAuthManager(c *config) (appauth.Manager, error) { +func getAppAuthManager(ctx context.Context, c *config) (appauth.Manager, error) { if f, ok := registry.NewFuncs[c.Driver]; ok { - return f(c.Drivers[c.Driver]) + return f(ctx, c.Drivers[c.Driver]) } return nil, errtypes.NotFound("driver not found: " + c.Driver) } @@ -73,7 +73,7 @@ func parseConfig(m map[string]interface{}) (*config, error) { } // New creates a app auth provider svc -func New(m map[string]interface{}, ss *grpc.Server) (rgrpc.Service, error) { +func New(ctx context.Context, m map[string]interface{}, ss *grpc.Server) (rgrpc.Service, error) { c, err := parseConfig(m) if err != nil { @@ -81,7 +81,7 @@ func New(m map[string]interface{}, ss *grpc.Server) (rgrpc.Service, error) { } c.init() - am, err := getAppAuthManager(c) + am, err := getAppAuthManager(ctx, c) if err != nil { return nil, err } diff --git a/internal/grpc/services/appprovider/appprovider.go b/internal/grpc/services/appprovider/appprovider.go index 881dc4c4b7a..15068e3d974 100644 --- a/internal/grpc/services/appprovider/appprovider.go +++ b/internal/grpc/services/appprovider/appprovider.go @@ -79,13 +79,13 @@ func parseConfig(m map[string]interface{}) (*config, error) { } // New creates a new AppProviderService -func New(m map[string]interface{}, ss *grpc.Server) (rgrpc.Service, error) { +func New(ctx context.Context, m map[string]interface{}, ss *grpc.Server) (rgrpc.Service, error) { c, err := parseConfig(m) if err != nil { return nil, err } - provider, err := getProvider(c) + provider, err := getProvider(ctx, c) if err != nil { return nil, err } @@ -163,9 +163,9 @@ func (s *service) Register(ss *grpc.Server) { providerpb.RegisterProviderAPIServer(ss, s) } -func getProvider(c *config) (app.Provider, error) { +func getProvider(ctx context.Context, c *config) (app.Provider, error) { if f, ok := registry.NewFuncs[c.Driver]; ok { - return f(c.Drivers[c.Driver]) + return f(ctx, c.Drivers[c.Driver]) } return nil, errtypes.NotFound("driver not found: " + c.Driver) } diff --git a/internal/grpc/services/appregistry/appregistry.go b/internal/grpc/services/appregistry/appregistry.go index 4b8c08f6d7b..3c1d9b5f5c1 100644 --- a/internal/grpc/services/appregistry/appregistry.go +++ b/internal/grpc/services/appregistry/appregistry.go @@ -64,14 +64,14 @@ func (c *config) init() { } // New creates a new StorageRegistryService -func New(m map[string]interface{}, ss *grpc.Server) (rgrpc.Service, error) { +func New(ctx context.Context, m map[string]interface{}, ss *grpc.Server) (rgrpc.Service, error) { c, err := parseConfig(m) if err != nil { return nil, err } - reg, err := getRegistry(c) + reg, err := getRegistry(ctx, c) if err != nil { return nil, err } @@ -92,9 +92,9 @@ func parseConfig(m map[string]interface{}) (*config, error) { return c, nil } -func getRegistry(c *config) (app.Registry, error) { +func getRegistry(ctx context.Context, c *config) (app.Registry, error) { if f, ok := registry.NewFuncs[c.Driver]; ok { - return f(c.Drivers[c.Driver]) + return f(ctx, c.Drivers[c.Driver]) } return nil, errtypes.NotFound("appregistrysvc: driver not found: " + c.Driver) } diff --git a/internal/grpc/services/appregistry/appregistry_test.go b/internal/grpc/services/appregistry/appregistry_test.go index 4230a1ffe87..cf1180cf9e7 100644 --- a/internal/grpc/services/appregistry/appregistry_test.go +++ b/internal/grpc/services/appregistry/appregistry_test.go @@ -122,7 +122,7 @@ func Test_ListAppProviders(t *testing.T) { for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - rr, err := static.New(map[string]interface{}{"providers": tt.providers, "mime_types": tt.mimeTypes}) + rr, err := static.New(context.Background(), map[string]interface{}{"providers": tt.providers, "mime_types": tt.mimeTypes}) if err != nil { t.Errorf("could not create registry error = %v", err) return @@ -296,7 +296,7 @@ func Test_GetAppProviders(t *testing.T) { }, } - rr, err := static.New(map[string]interface{}{"providers": providers, "mime_types": mimeTypes}) + rr, err := static.New(context.Background(), map[string]interface{}{"providers": providers, "mime_types": mimeTypes}) if err != nil { t.Errorf("could not create registry error = %v", err) return @@ -356,7 +356,7 @@ func TestNew(t *testing.T) { for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - got, err := New(tt.m, nil) + got, err := New(context.Background(), tt.m, nil) if err != nil { assert.Equal(t, tt.wantErr, err.Error()) assert.Nil(t, got) diff --git a/internal/grpc/services/authprovider/authprovider.go b/internal/grpc/services/authprovider/authprovider.go index ae4c7c10508..615ed8a47eb 100644 --- a/internal/grpc/services/authprovider/authprovider.go +++ b/internal/grpc/services/authprovider/authprovider.go @@ -67,7 +67,7 @@ func parseConfig(m map[string]interface{}) (*config, error) { return c, nil } -func getAuthManager(manager string, m map[string]map[string]interface{}) (auth.Manager, *plugin.RevaPlugin, error) { +func getAuthManager(ctx context.Context, manager string, m map[string]map[string]interface{}) (auth.Manager, *plugin.RevaPlugin, error) { if manager == "" { return nil, nil, errtypes.InternalError("authsvc: driver not configured for auth manager") } @@ -85,7 +85,7 @@ func getAuthManager(manager string, m map[string]map[string]interface{}) (auth.M return authManager, p, nil } else if _, ok := err.(errtypes.NotFound); ok { if f, ok := registry.NewFuncs[manager]; ok { - authmgr, err := f(m[manager]) + authmgr, err := f(ctx, m[manager]) return authmgr, nil, err } } else { @@ -95,13 +95,13 @@ func getAuthManager(manager string, m map[string]map[string]interface{}) (auth.M } // New returns a new AuthProviderServiceServer. -func New(m map[string]interface{}, ss *grpc.Server) (rgrpc.Service, error) { +func New(ctx context.Context, m map[string]interface{}, ss *grpc.Server) (rgrpc.Service, error) { c, err := parseConfig(m) if err != nil { return nil, err } - authManager, plug, err := getAuthManager(c.AuthManager, c.AuthManagers) + authManager, plug, err := getAuthManager(ctx, c.AuthManager, c.AuthManagers) if err != nil { return nil, err } diff --git a/internal/grpc/services/authregistry/authregistry.go b/internal/grpc/services/authregistry/authregistry.go index a449a28be9e..56a714034d3 100644 --- a/internal/grpc/services/authregistry/authregistry.go +++ b/internal/grpc/services/authregistry/authregistry.go @@ -66,7 +66,7 @@ func (c *config) init() { } // New creates a new AuthRegistry -func New(m map[string]interface{}, ss *grpc.Server) (rgrpc.Service, error) { +func New(ctx context.Context, m map[string]interface{}, ss *grpc.Server) (rgrpc.Service, error) { c, err := parseConfig(m) if err != nil { return nil, err @@ -74,7 +74,7 @@ func New(m map[string]interface{}, ss *grpc.Server) (rgrpc.Service, error) { c.init() - reg, err := getRegistry(c) + reg, err := getRegistry(ctx, c) if err != nil { return nil, err } @@ -94,9 +94,9 @@ func parseConfig(m map[string]interface{}) (*config, error) { return c, nil } -func getRegistry(c *config) (auth.Registry, error) { +func getRegistry(ctx context.Context, c *config) (auth.Registry, error) { if f, ok := registry.NewFuncs[c.Driver]; ok { - return f(c.Drivers[c.Driver]) + return f(ctx, c.Drivers[c.Driver]) } return nil, errtypes.NotFound("authregistrysvc: driver not found: " + c.Driver) } diff --git a/internal/grpc/services/datatx/datatx.go b/internal/grpc/services/datatx/datatx.go index 8c2c2b87e27..5be0d4afea7 100644 --- a/internal/grpc/services/datatx/datatx.go +++ b/internal/grpc/services/datatx/datatx.go @@ -100,9 +100,9 @@ func (s *service) Register(ss *grpc.Server) { datatx.RegisterTxAPIServer(ss, s) } -func getDatatxManager(c *config) (txdriver.Manager, error) { +func getDatatxManager(ctx context.Context, c *config) (txdriver.Manager, error) { if f, ok := txregistry.NewFuncs[c.TxDriver]; ok { - return f(c.TxDrivers[c.TxDriver]) + return f(ctx, c.TxDrivers[c.TxDriver]) } return nil, errtypes.NotFound("datatx service: driver not found: " + c.TxDriver) } @@ -117,7 +117,7 @@ func parseConfig(m map[string]interface{}) (*config, error) { } // New creates a new datatx svc -func New(m map[string]interface{}, ss *grpc.Server) (rgrpc.Service, error) { +func New(ctx context.Context, m map[string]interface{}, ss *grpc.Server) (rgrpc.Service, error) { c, err := parseConfig(m) if err != nil { @@ -125,7 +125,7 @@ func New(m map[string]interface{}, ss *grpc.Server) (rgrpc.Service, error) { } c.init() - txManager, err := getDatatxManager(c) + txManager, err := getDatatxManager(ctx, c) if err != nil { return nil, err } diff --git a/internal/grpc/services/gateway/gateway.go b/internal/grpc/services/gateway/gateway.go index 5108abf5017..4979ff05903 100644 --- a/internal/grpc/services/gateway/gateway.go +++ b/internal/grpc/services/gateway/gateway.go @@ -19,6 +19,7 @@ package gateway import ( + "context" "fmt" "net/url" "strings" @@ -129,7 +130,7 @@ type svc struct { // New creates a new gateway svc that acts as a proxy for any grpc operation. // The gateway is responsible for high-level controls: rate-limiting, coordination between svcs // like sharing and storage acls, asynchronous transactions, ... -func New(m map[string]interface{}, ss *grpc.Server) (rgrpc.Service, error) { +func New(ctx context.Context, m map[string]interface{}, ss *grpc.Server) (rgrpc.Service, error) { c, err := parseConfig(m) if err != nil { return nil, err diff --git a/internal/grpc/services/groupprovider/groupprovider.go b/internal/grpc/services/groupprovider/groupprovider.go index 75cf828962d..ae4c4569ffb 100644 --- a/internal/grpc/services/groupprovider/groupprovider.go +++ b/internal/grpc/services/groupprovider/groupprovider.go @@ -59,22 +59,22 @@ func parseConfig(m map[string]interface{}) (*config, error) { return c, nil } -func getDriver(c *config) (group.Manager, error) { +func getDriver(ctx context.Context, c *config) (group.Manager, error) { if f, ok := registry.NewFuncs[c.Driver]; ok { - return f(c.Drivers[c.Driver]) + return f(ctx, c.Drivers[c.Driver]) } return nil, errtypes.NotFound(fmt.Sprintf("driver %s not found for group manager", c.Driver)) } // New returns a new GroupProviderServiceServer. -func New(m map[string]interface{}, ss *grpc.Server) (rgrpc.Service, error) { +func New(ctx context.Context, m map[string]interface{}, ss *grpc.Server) (rgrpc.Service, error) { c, err := parseConfig(m) if err != nil { return nil, err } - groupManager, err := getDriver(c) + groupManager, err := getDriver(ctx, c) if err != nil { return nil, err } diff --git a/internal/grpc/services/helloworld/helloworld.go b/internal/grpc/services/helloworld/helloworld.go index 1f8bac38150..ae72cf73921 100644 --- a/internal/grpc/services/helloworld/helloworld.go +++ b/internal/grpc/services/helloworld/helloworld.go @@ -43,7 +43,7 @@ type service struct { // New returns a new PreferencesServiceServer // It can be tested like this: // prototool grpc --address 0.0.0.0:9999 --method 'revad.helloworld.HelloWorldService/Hello' --data '{"name": "Alice"}' -func New(m map[string]interface{}, ss *grpc.Server) (rgrpc.Service, error) { +func New(ctx context.Context, m map[string]interface{}, ss *grpc.Server) (rgrpc.Service, error) { c := &conf{} if err := mapstructure.Decode(m, c); err != nil { err = errors.Wrap(err, "helloworld: error decoding conf") diff --git a/internal/grpc/services/ocmcore/ocmcore.go b/internal/grpc/services/ocmcore/ocmcore.go index 2f2dcf615f0..552554eab7f 100644 --- a/internal/grpc/services/ocmcore/ocmcore.go +++ b/internal/grpc/services/ocmcore/ocmcore.go @@ -61,9 +61,9 @@ func (s *service) Register(ss *grpc.Server) { ocmcore.RegisterOcmCoreAPIServer(ss, s) } -func getShareManager(c *config) (share.Manager, error) { +func getShareManager(ctx context.Context, c *config) (share.Manager, error) { if f, ok := registry.NewFuncs[c.Driver]; ok { - return f(c.Drivers[c.Driver]) + return f(ctx, c.Drivers[c.Driver]) } return nil, errtypes.NotFound(fmt.Sprintf("driver not found: %s", c.Driver)) } @@ -78,7 +78,7 @@ func parseConfig(m map[string]interface{}) (*config, error) { } // New creates a new ocm core svc -func New(m map[string]interface{}, ss *grpc.Server) (rgrpc.Service, error) { +func New(ctx context.Context, m map[string]interface{}, ss *grpc.Server) (rgrpc.Service, error) { c, err := parseConfig(m) if err != nil { @@ -86,7 +86,7 @@ func New(m map[string]interface{}, ss *grpc.Server) (rgrpc.Service, error) { } c.init() - sm, err := getShareManager(c) + sm, err := getShareManager(ctx, c) if err != nil { return nil, err } diff --git a/internal/grpc/services/ocminvitemanager/ocminvitemanager.go b/internal/grpc/services/ocminvitemanager/ocminvitemanager.go index 6821f7d29e9..6ff2acb7631 100644 --- a/internal/grpc/services/ocminvitemanager/ocminvitemanager.go +++ b/internal/grpc/services/ocminvitemanager/ocminvitemanager.go @@ -56,9 +56,9 @@ func (s *service) Register(ss *grpc.Server) { invitepb.RegisterInviteAPIServer(ss, s) } -func getInviteManager(c *config) (invite.Manager, error) { +func getInviteManager(ctx context.Context, c *config) (invite.Manager, error) { if f, ok := registry.NewFuncs[c.Driver]; ok { - return f(c.Drivers[c.Driver]) + return f(ctx, c.Drivers[c.Driver]) } return nil, errtypes.NotFound("driver not found: " + c.Driver) } @@ -73,7 +73,7 @@ func parseConfig(m map[string]interface{}) (*config, error) { } // New creates a new OCM invite manager svc -func New(m map[string]interface{}, ss *grpc.Server) (rgrpc.Service, error) { +func New(ctx context.Context, m map[string]interface{}, ss *grpc.Server) (rgrpc.Service, error) { c, err := parseConfig(m) if err != nil { @@ -81,7 +81,7 @@ func New(m map[string]interface{}, ss *grpc.Server) (rgrpc.Service, error) { } c.init() - im, err := getInviteManager(c) + im, err := getInviteManager(ctx, c) if err != nil { return nil, err } diff --git a/internal/grpc/services/ocmproviderauthorizer/ocmproviderauthorizer.go b/internal/grpc/services/ocmproviderauthorizer/ocmproviderauthorizer.go index 8d89fccdd12..9be7002a6af 100644 --- a/internal/grpc/services/ocmproviderauthorizer/ocmproviderauthorizer.go +++ b/internal/grpc/services/ocmproviderauthorizer/ocmproviderauthorizer.go @@ -56,9 +56,9 @@ func (s *service) Register(ss *grpc.Server) { ocmprovider.RegisterProviderAPIServer(ss, s) } -func getProviderAuthorizer(c *config) (provider.Authorizer, error) { +func getProviderAuthorizer(ctx context.Context, c *config) (provider.Authorizer, error) { if f, ok := registry.NewFuncs[c.Driver]; ok { - return f(c.Drivers[c.Driver]) + return f(ctx, c.Drivers[c.Driver]) } return nil, errtypes.NotFound("driver not found: " + c.Driver) } @@ -73,7 +73,7 @@ func parseConfig(m map[string]interface{}) (*config, error) { } // New creates a new OCM provider authorizer svc -func New(m map[string]interface{}, ss *grpc.Server) (rgrpc.Service, error) { +func New(ctx context.Context, m map[string]interface{}, ss *grpc.Server) (rgrpc.Service, error) { c, err := parseConfig(m) if err != nil { @@ -81,7 +81,7 @@ func New(m map[string]interface{}, ss *grpc.Server) (rgrpc.Service, error) { } c.init() - pa, err := getProviderAuthorizer(c) + pa, err := getProviderAuthorizer(ctx, c) if err != nil { return nil, err } diff --git a/internal/grpc/services/ocmshareprovider/ocmshareprovider.go b/internal/grpc/services/ocmshareprovider/ocmshareprovider.go index 2cf80c15f39..041726e0ff9 100644 --- a/internal/grpc/services/ocmshareprovider/ocmshareprovider.go +++ b/internal/grpc/services/ocmshareprovider/ocmshareprovider.go @@ -56,9 +56,9 @@ func (s *service) Register(ss *grpc.Server) { ocm.RegisterOcmAPIServer(ss, s) } -func getShareManager(c *config) (share.Manager, error) { +func getShareManager(ctx context.Context, c *config) (share.Manager, error) { if f, ok := registry.NewFuncs[c.Driver]; ok { - return f(c.Drivers[c.Driver]) + return f(ctx, c.Drivers[c.Driver]) } return nil, errtypes.NotFound("driver not found: " + c.Driver) } @@ -73,7 +73,7 @@ func parseConfig(m map[string]interface{}) (*config, error) { } // New creates a new ocm share provider svc -func New(m map[string]interface{}, ss *grpc.Server) (rgrpc.Service, error) { +func New(ctx context.Context, m map[string]interface{}, ss *grpc.Server) (rgrpc.Service, error) { c, err := parseConfig(m) if err != nil { @@ -81,7 +81,7 @@ func New(m map[string]interface{}, ss *grpc.Server) (rgrpc.Service, error) { } c.init() - sm, err := getShareManager(c) + sm, err := getShareManager(ctx, c) if err != nil { return nil, err } diff --git a/internal/grpc/services/permissions/permissions.go b/internal/grpc/services/permissions/permissions.go index 4479fdb88c6..146a161da54 100644 --- a/internal/grpc/services/permissions/permissions.go +++ b/internal/grpc/services/permissions/permissions.go @@ -55,7 +55,7 @@ type service struct { } // New returns a new PermissionsServiceServer -func New(m map[string]interface{}, ss *grpc.Server) (rgrpc.Service, error) { +func New(ctx context.Context, m map[string]interface{}, ss *grpc.Server) (rgrpc.Service, error) { c, err := parseConfig(m) if err != nil { return nil, err @@ -65,7 +65,7 @@ func New(m map[string]interface{}, ss *grpc.Server) (rgrpc.Service, error) { if !ok { return nil, fmt.Errorf("could not get permission manager '%s'", c.Driver) } - manager, err := f(c.Drivers[c.Driver]) + manager, err := f(ctx, c.Drivers[c.Driver]) if err != nil { return nil, err } diff --git a/internal/grpc/services/preferences/preferences.go b/internal/grpc/services/preferences/preferences.go index 6920fc70699..bc85d47fce4 100644 --- a/internal/grpc/services/preferences/preferences.go +++ b/internal/grpc/services/preferences/preferences.go @@ -53,9 +53,9 @@ type service struct { pm preferences.Manager } -func getPreferencesManager(c *config) (preferences.Manager, error) { +func getPreferencesManager(ctx context.Context, c *config) (preferences.Manager, error) { if f, ok := registry.NewFuncs[c.Driver]; ok { - return f(c.Drivers[c.Driver]) + return f(ctx, c.Drivers[c.Driver]) } return nil, errtypes.NotFound("driver not found: " + c.Driver) } @@ -70,7 +70,7 @@ func parseConfig(m map[string]interface{}) (*config, error) { } // New returns a new PreferencesServiceServer -func New(m map[string]interface{}, ss *grpc.Server) (rgrpc.Service, error) { +func New(ctx context.Context, m map[string]interface{}, ss *grpc.Server) (rgrpc.Service, error) { c, err := parseConfig(m) if err != nil { return nil, err @@ -78,7 +78,7 @@ func New(m map[string]interface{}, ss *grpc.Server) (rgrpc.Service, error) { c.init() - pm, err := getPreferencesManager(c) + pm, err := getPreferencesManager(ctx, c) if err != nil { return nil, err } diff --git a/internal/grpc/services/publicshareprovider/publicshareprovider.go b/internal/grpc/services/publicshareprovider/publicshareprovider.go index b43a2bf22e7..4f1ae089ca3 100644 --- a/internal/grpc/services/publicshareprovider/publicshareprovider.go +++ b/internal/grpc/services/publicshareprovider/publicshareprovider.go @@ -58,9 +58,9 @@ type service struct { allowedPathsForShares []*regexp.Regexp } -func getShareManager(c *config) (publicshare.Manager, error) { +func getShareManager(ctx context.Context, c *config) (publicshare.Manager, error) { if f, ok := registry.NewFuncs[c.Driver]; ok { - return f(c.Drivers[c.Driver]) + return f(ctx, c.Drivers[c.Driver]) } return nil, errtypes.NotFound("driver not found: " + c.Driver) } @@ -87,7 +87,7 @@ func parseConfig(m map[string]interface{}) (*config, error) { } // New creates a new user share provider svc -func New(m map[string]interface{}, ss *grpc.Server) (rgrpc.Service, error) { +func New(ctx context.Context, m map[string]interface{}, ss *grpc.Server) (rgrpc.Service, error) { c, err := parseConfig(m) if err != nil { @@ -96,7 +96,7 @@ func New(m map[string]interface{}, ss *grpc.Server) (rgrpc.Service, error) { c.init() - sm, err := getShareManager(c) + sm, err := getShareManager(ctx, c) if err != nil { return nil, err } diff --git a/internal/grpc/services/publicstorageprovider/publicstorageprovider.go b/internal/grpc/services/publicstorageprovider/publicstorageprovider.go index 13c3d779690..7a7ced5e79a 100644 --- a/internal/grpc/services/publicstorageprovider/publicstorageprovider.go +++ b/internal/grpc/services/publicstorageprovider/publicstorageprovider.go @@ -83,7 +83,7 @@ func parseConfig(m map[string]interface{}) (*config, error) { } // New creates a new IsPublic Storage Provider service. -func New(m map[string]interface{}, ss *grpc.Server) (rgrpc.Service, error) { +func New(ctx context.Context, m map[string]interface{}, ss *grpc.Server) (rgrpc.Service, error) { c, err := parseConfig(m) if err != nil { return nil, err diff --git a/internal/grpc/services/storageprovider/storageprovider.go b/internal/grpc/services/storageprovider/storageprovider.go index 2129e930f0b..e52789f58f6 100644 --- a/internal/grpc/services/storageprovider/storageprovider.go +++ b/internal/grpc/services/storageprovider/storageprovider.go @@ -162,7 +162,7 @@ func registerMimeTypes(mappingFile string) error { } // New creates a new storage provider svc -func New(m map[string]interface{}, ss *grpc.Server) (rgrpc.Service, error) { +func New(ctx context.Context, m map[string]interface{}, ss *grpc.Server) (rgrpc.Service, error) { c, err := parseConfig(m) if err != nil { @@ -178,7 +178,7 @@ func New(m map[string]interface{}, ss *grpc.Server) (rgrpc.Service, error) { mountPath := c.MountPath mountID := c.MountID - fs, err := getFS(c) + fs, err := getFS(ctx, c) if err != nil { return nil, err } @@ -1520,9 +1520,9 @@ func (s *service) GetQuota(ctx context.Context, req *provider.GetQuotaRequest) ( return res, nil } -func getFS(c *config) (storage.FS, error) { +func getFS(ctx context.Context, c *config) (storage.FS, error) { if f, ok := registry.NewFuncs[c.Driver]; ok { - return f(c.Drivers[c.Driver]) + return f(ctx, c.Drivers[c.Driver]) } return nil, errtypes.NotFound("driver not found: " + c.Driver) } diff --git a/internal/grpc/services/storageregistry/storageregistry.go b/internal/grpc/services/storageregistry/storageregistry.go index 4f59ae56496..119273da55a 100644 --- a/internal/grpc/services/storageregistry/storageregistry.go +++ b/internal/grpc/services/storageregistry/storageregistry.go @@ -64,7 +64,7 @@ func (c *config) init() { } // New creates a new StorageBrokerService -func New(m map[string]interface{}, ss *grpc.Server) (rgrpc.Service, error) { +func New(ctx context.Context, m map[string]interface{}, ss *grpc.Server) (rgrpc.Service, error) { c, err := parseConfig(m) if err != nil { return nil, err @@ -72,7 +72,7 @@ func New(m map[string]interface{}, ss *grpc.Server) (rgrpc.Service, error) { c.init() - reg, err := getRegistry(c) + reg, err := getRegistry(ctx, c) if err != nil { return nil, err } @@ -92,9 +92,9 @@ func parseConfig(m map[string]interface{}) (*config, error) { return c, nil } -func getRegistry(c *config) (storage.Registry, error) { +func getRegistry(ctx context.Context, c *config) (storage.Registry, error) { if f, ok := registry.NewFuncs[c.Driver]; ok { - return f(c.Drivers[c.Driver]) + return f(ctx, c.Drivers[c.Driver]) } return nil, errtypes.NotFound("driver not found: " + c.Driver) } diff --git a/internal/grpc/services/userprovider/userprovider.go b/internal/grpc/services/userprovider/userprovider.go index f9e8bc2bd5a..cb0c7c80036 100644 --- a/internal/grpc/services/userprovider/userprovider.go +++ b/internal/grpc/services/userprovider/userprovider.go @@ -61,7 +61,7 @@ func parseConfig(m map[string]interface{}) (*config, error) { return c, nil } -func getDriver(c *config) (user.Manager, *plugin.RevaPlugin, error) { +func getDriver(ctx context.Context, c *config) (user.Manager, *plugin.RevaPlugin, error) { p, err := plugin.Load("userprovider", c.Driver) if err == nil { manager, ok := p.Plugin.(user.Manager) @@ -77,7 +77,7 @@ func getDriver(c *config) (user.Manager, *plugin.RevaPlugin, error) { } else if _, ok := err.(errtypes.NotFound); ok { // plugin not found, fetch the driver from the in-memory registry if f, ok := registry.NewFuncs[c.Driver]; ok { - mgr, err := f(c.Drivers[c.Driver]) + mgr, err := f(ctx, c.Drivers[c.Driver]) return mgr, nil, err } } else { @@ -87,12 +87,12 @@ func getDriver(c *config) (user.Manager, *plugin.RevaPlugin, error) { } // New returns a new UserProviderServiceServer. -func New(m map[string]interface{}, ss *grpc.Server) (rgrpc.Service, error) { +func New(ctx context.Context, m map[string]interface{}, ss *grpc.Server) (rgrpc.Service, error) { c, err := parseConfig(m) if err != nil { return nil, err } - userManager, plug, err := getDriver(c) + userManager, plug, err := getDriver(ctx, c) if err != nil { return nil, err } diff --git a/internal/grpc/services/usershareprovider/usershareprovider.go b/internal/grpc/services/usershareprovider/usershareprovider.go index 372020704ff..d2148b9c01d 100644 --- a/internal/grpc/services/usershareprovider/usershareprovider.go +++ b/internal/grpc/services/usershareprovider/usershareprovider.go @@ -59,9 +59,9 @@ type service struct { allowedPathsForShares []*regexp.Regexp } -func getShareManager(c *config) (share.Manager, error) { +func getShareManager(ctx context.Context, c *config) (share.Manager, error) { if f, ok := registry.NewFuncs[c.Driver]; ok { - return f(c.Drivers[c.Driver]) + return f(ctx, c.Drivers[c.Driver]) } return nil, errtypes.NotFound("driver not found: " + c.Driver) } @@ -89,7 +89,7 @@ func parseConfig(m map[string]interface{}) (*config, error) { } // New creates a new user share provider svc -func New(m map[string]interface{}, ss *grpc.Server) (rgrpc.Service, error) { +func New(ctx context.Context, m map[string]interface{}, ss *grpc.Server) (rgrpc.Service, error) { c, err := parseConfig(m) if err != nil { @@ -98,7 +98,7 @@ func New(m map[string]interface{}, ss *grpc.Server) (rgrpc.Service, error) { c.init() - sm, err := getShareManager(c) + sm, err := getShareManager(ctx, c) if err != nil { return nil, err } diff --git a/internal/http/interceptors/cors/cors.go b/internal/http/interceptors/cors/cors.go index 1d7080ac094..0bc8bef71ae 100644 --- a/internal/http/interceptors/cors/cors.go +++ b/internal/http/interceptors/cors/cors.go @@ -19,6 +19,8 @@ package cors import ( + "context" + "github.com/cs3org/reva/pkg/rhttp/global" "github.com/mitchellh/mapstructure" "github.com/rs/cors" @@ -45,7 +47,7 @@ type config struct { } // New creates a new CORS middleware. -func New(m map[string]interface{}) (global.Middleware, int, error) { +func New(ctx context.Context, m map[string]interface{}) (global.Middleware, int, error) { conf := &config{} if err := mapstructure.Decode(m, conf); err != nil { return nil, 0, err diff --git a/internal/http/interceptors/providerauthorizer/providerauthorizer.go b/internal/http/interceptors/providerauthorizer/providerauthorizer.go index 450614dcc80..ec9b449aba4 100644 --- a/internal/http/interceptors/providerauthorizer/providerauthorizer.go +++ b/internal/http/interceptors/providerauthorizer/providerauthorizer.go @@ -19,6 +19,7 @@ package providerauthorizer import ( + "context" "fmt" "net/http" "net/url" @@ -46,16 +47,16 @@ func (c *config) init() { } } -func getDriver(c *config) (provider.Authorizer, error) { +func getDriver(ctx context.Context, c *config) (provider.Authorizer, error) { if f, ok := registry.NewFuncs[c.Driver]; ok { - return f(c.Drivers[c.Driver]) + return f(ctx, c.Drivers[c.Driver]) } return nil, fmt.Errorf("driver %s not found for provider authorizer", c.Driver) } // New returns a new HTTP middleware that verifies that the provider is registered in OCM. -func New(m map[string]interface{}, unprotected []string, ocmPrefix string) (global.Middleware, error) { +func New(ctx context.Context, m map[string]interface{}, unprotected []string, ocmPrefix string) (global.Middleware, error) { if ocmPrefix == "" { ocmPrefix = "ocm" @@ -67,7 +68,7 @@ func New(m map[string]interface{}, unprotected []string, ocmPrefix string) (glob } conf.init() - authorizer, err := getDriver(conf) + authorizer, err := getDriver(ctx, conf) if err != nil { return nil, err } diff --git a/internal/http/services/appprovider/appprovider.go b/internal/http/services/appprovider/appprovider.go index 7c16c324fd3..3bcd9e55cb8 100644 --- a/internal/http/services/appprovider/appprovider.go +++ b/internal/http/services/appprovider/appprovider.go @@ -19,6 +19,7 @@ package appprovider import ( + "context" "encoding/json" "net/http" "path" @@ -40,7 +41,6 @@ import ( ua "github.com/mileusna/useragent" "github.com/mitchellh/mapstructure" "github.com/pkg/errors" - "github.com/rs/zerolog" ) func init() { @@ -67,7 +67,7 @@ type svc struct { } // New returns a new ocmd object -func New(m map[string]interface{}, log *zerolog.Logger) (global.Service, error) { +func New(ctx context.Context, m map[string]interface{}) (global.Service, error) { conf := &Config{} if err := mapstructure.Decode(m, conf); err != nil { diff --git a/internal/http/services/archiver/handler.go b/internal/http/services/archiver/handler.go index bbfe4e8642a..38fbc991a0e 100644 --- a/internal/http/services/archiver/handler.go +++ b/internal/http/services/archiver/handler.go @@ -74,7 +74,7 @@ func init() { } // New creates a new archiver service -func New(conf map[string]interface{}, log *zerolog.Logger) (global.Service, error) { +func New(ctx context.Context, conf map[string]interface{}) (global.Service, error) { c := &Config{} err := mapstructure.Decode(conf, c) if err != nil { @@ -103,7 +103,6 @@ func New(conf map[string]interface{}, log *zerolog.Logger) (global.Service, erro gtwClient: gtw, downloader: downloader.NewDownloader(gtw, rhttp.Insecure(c.Insecure), rhttp.Timeout(time.Duration(c.Timeout*int64(time.Second)))), walker: walker.NewWalker(gtw), - log: log, allowedFolders: allowedFolderRegex, }, nil } diff --git a/internal/http/services/datagateway/datagateway.go b/internal/http/services/datagateway/datagateway.go index dba255f6be9..aa7b06212a8 100644 --- a/internal/http/services/datagateway/datagateway.go +++ b/internal/http/services/datagateway/datagateway.go @@ -35,7 +35,6 @@ import ( "github.com/golang-jwt/jwt" "github.com/mitchellh/mapstructure" "github.com/pkg/errors" - "github.com/rs/zerolog" ) const ( @@ -76,7 +75,7 @@ type svc struct { } // New returns a new datagateway -func New(m map[string]interface{}, log *zerolog.Logger) (global.Service, error) { +func New(ctx context.Context, m map[string]interface{}) (global.Service, error) { conf := &config{} if err := mapstructure.Decode(m, conf); err != nil { return nil, err diff --git a/internal/http/services/dataprovider/dataprovider.go b/internal/http/services/dataprovider/dataprovider.go index a149e7118db..ab4453e0202 100644 --- a/internal/http/services/dataprovider/dataprovider.go +++ b/internal/http/services/dataprovider/dataprovider.go @@ -19,6 +19,7 @@ package dataprovider import ( + "context" "fmt" "net/http" @@ -29,7 +30,6 @@ import ( "github.com/cs3org/reva/pkg/storage" "github.com/cs3org/reva/pkg/storage/fs/registry" "github.com/mitchellh/mapstructure" - "github.com/rs/zerolog" ) func init() { @@ -62,7 +62,7 @@ type svc struct { } // New returns a new datasvc -func New(m map[string]interface{}, log *zerolog.Logger) (global.Service, error) { +func New(ctx context.Context, m map[string]interface{}) (global.Service, error) { conf := &config{} if err := mapstructure.Decode(m, conf); err != nil { return nil, err @@ -70,7 +70,7 @@ func New(m map[string]interface{}, log *zerolog.Logger) (global.Service, error) conf.init() - fs, err := getFS(conf) + fs, err := getFS(ctx, conf) if err != nil { return nil, err } @@ -90,9 +90,9 @@ func New(m map[string]interface{}, log *zerolog.Logger) (global.Service, error) return s, err } -func getFS(c *config) (storage.FS, error) { +func getFS(ctx context.Context, c *config) (storage.FS, error) { if f, ok := registry.NewFuncs[c.Driver]; ok { - return f(c.Drivers[c.Driver]) + return f(ctx, c.Drivers[c.Driver]) } return nil, fmt.Errorf("driver not found: %s", c.Driver) } diff --git a/internal/http/services/helloworld/helloworld.go b/internal/http/services/helloworld/helloworld.go index f194b346028..5f0d77e1754 100644 --- a/internal/http/services/helloworld/helloworld.go +++ b/internal/http/services/helloworld/helloworld.go @@ -19,12 +19,12 @@ package helloworld import ( + "context" "net/http" "github.com/cs3org/reva/pkg/appctx" "github.com/cs3org/reva/pkg/rhttp/global" "github.com/mitchellh/mapstructure" - "github.com/rs/zerolog" ) func init() { @@ -32,7 +32,7 @@ func init() { } // New returns a new helloworld service -func New(m map[string]interface{}, log *zerolog.Logger) (global.Service, error) { +func New(ctx context.Context, m map[string]interface{}) (global.Service, error) { conf := &config{} if err := mapstructure.Decode(m, conf); err != nil { return nil, err diff --git a/internal/http/services/mailer/mailer.go b/internal/http/services/mailer/mailer.go index 3f47a5f64df..390e5b77766 100644 --- a/internal/http/services/mailer/mailer.go +++ b/internal/http/services/mailer/mailer.go @@ -43,7 +43,6 @@ import ( "github.com/cs3org/reva/pkg/rhttp/global" "github.com/cs3org/reva/pkg/sharedconf" "github.com/mitchellh/mapstructure" - "github.com/rs/zerolog" ) func init() { @@ -69,7 +68,7 @@ type svc struct { } // New creates a new mailer service -func New(m map[string]interface{}, log *zerolog.Logger) (global.Service, error) { +func New(ctx context.Context, m map[string]interface{}) (global.Service, error) { conf := &config{} if err := mapstructure.Decode(m, conf); err != nil { return nil, err diff --git a/internal/http/services/mentix/mentix.go b/internal/http/services/mentix/mentix.go index af9adb90ed9..6f08388bf3f 100644 --- a/internal/http/services/mentix/mentix.go +++ b/internal/http/services/mentix/mentix.go @@ -19,8 +19,10 @@ package mentix import ( + "context" "net/http" + "github.com/cs3org/reva/pkg/appctx" "github.com/cs3org/reva/pkg/mentix/meshdata" "github.com/mitchellh/mapstructure" "github.com/pkg/errors" @@ -167,7 +169,7 @@ func applyDefaultConfig(conf *config.Configuration) { } // New returns a new Mentix service. -func New(m map[string]interface{}, log *zerolog.Logger) (global.Service, error) { +func New(ctx context.Context, m map[string]interface{}) (global.Service, error) { // Prepare the configuration conf, err := parseConfig(m) if err != nil { @@ -176,6 +178,7 @@ func New(m map[string]interface{}, log *zerolog.Logger) (global.Service, error) conf.Init() + log := appctx.GetLogger(ctx) // Create the Mentix instance mntx, err := mentix.New(conf, log) if err != nil { @@ -186,7 +189,6 @@ func New(m map[string]interface{}, log *zerolog.Logger) (global.Service, error) s := &svc{ conf: conf, mntx: mntx, - log: log, stopSignal: make(chan struct{}), } s.startBackgroundService() diff --git a/internal/http/services/meshdirectory/meshdirectory.go b/internal/http/services/meshdirectory/meshdirectory.go index dba4c3d79b3..78921ad7452 100644 --- a/internal/http/services/meshdirectory/meshdirectory.go +++ b/internal/http/services/meshdirectory/meshdirectory.go @@ -19,6 +19,7 @@ package meshdirectory import ( + "context" "encoding/json" "fmt" "net/http" @@ -33,7 +34,6 @@ import ( "github.com/cs3org/reva/pkg/rhttp/router" "github.com/cs3org/reva/pkg/sharedconf" "github.com/pkg/errors" - "github.com/rs/zerolog" "github.com/cs3org/reva/pkg/rhttp/global" "github.com/mitchellh/mapstructure" @@ -70,7 +70,7 @@ func parseConfig(m map[string]interface{}) (*config, error) { } // New returns a new Mesh Directory HTTP service -func New(m map[string]interface{}, log *zerolog.Logger) (global.Service, error) { +func New(ctx context.Context, m map[string]interface{}) (global.Service, error) { c, err := parseConfig(m) if err != nil { return nil, err diff --git a/internal/http/services/metrics/metrics.go b/internal/http/services/metrics/metrics.go index 7fee35c6c49..146fb24e14f 100644 --- a/internal/http/services/metrics/metrics.go +++ b/internal/http/services/metrics/metrics.go @@ -22,12 +22,12 @@ package metrics This service initializes the metrics package according to the metrics configuration. */ import ( + "context" "net/http" "os" "github.com/cs3org/reva/pkg/logger" "github.com/mitchellh/mapstructure" - "github.com/rs/zerolog" "github.com/cs3org/reva/pkg/metrics" "github.com/cs3org/reva/pkg/metrics/config" @@ -70,7 +70,7 @@ func (s *svc) Handler() http.Handler { } // New returns a new metrics service. -func New(m map[string]interface{}, log *zerolog.Logger) (global.Service, error) { +func New(ctx context.Context, m map[string]interface{}) (global.Service, error) { // Prepare the configuration conf := &config.Config{} if err := mapstructure.Decode(m, conf); err != nil { diff --git a/internal/http/services/ocmd/ocmd.go b/internal/http/services/ocmd/ocmd.go index c65cec5d67b..3f6d7ae8ce0 100644 --- a/internal/http/services/ocmd/ocmd.go +++ b/internal/http/services/ocmd/ocmd.go @@ -19,6 +19,7 @@ package ocmd import ( + "context" "net/http" "github.com/cs3org/reva/pkg/appctx" @@ -27,7 +28,6 @@ import ( "github.com/cs3org/reva/pkg/sharedconf" "github.com/cs3org/reva/pkg/smtpclient" "github.com/mitchellh/mapstructure" - "github.com/rs/zerolog" ) func init() { @@ -62,7 +62,7 @@ type svc struct { } // New returns a new ocmd object -func New(m map[string]interface{}, log *zerolog.Logger) (global.Service, error) { +func New(ctx context.Context, m map[string]interface{}) (global.Service, error) { conf := &Config{} if err := mapstructure.Decode(m, conf); err != nil { @@ -70,6 +70,7 @@ func New(m map[string]interface{}, log *zerolog.Logger) (global.Service, error) } conf.init() + log := appctx.GetLogger(ctx) s := &svc{ Conf: conf, } diff --git a/internal/http/services/owncloud/ocdav/ocdav.go b/internal/http/services/owncloud/ocdav/ocdav.go index 33020ddde23..5c418e51d43 100644 --- a/internal/http/services/owncloud/ocdav/ocdav.go +++ b/internal/http/services/owncloud/ocdav/ocdav.go @@ -43,7 +43,6 @@ import ( "github.com/cs3org/reva/pkg/storage/utils/templates" "github.com/mitchellh/mapstructure" "github.com/pkg/errors" - "github.com/rs/zerolog" ) type ctxKey int @@ -131,7 +130,7 @@ func getFavoritesManager(c *Config) (favorite.Manager, error) { } // New returns a new ocdav -func New(m map[string]interface{}, log *zerolog.Logger) (global.Service, error) { +func New(ctx context.Context, m map[string]interface{}) (global.Service, error) { conf := &Config{} if err := mapstructure.Decode(m, conf); err != nil { return nil, err diff --git a/internal/http/services/owncloud/ocs/conversions/main.go b/internal/http/services/owncloud/ocs/conversions/main.go index f240152bcd3..d18ae0166c9 100644 --- a/internal/http/services/owncloud/ocs/conversions/main.go +++ b/internal/http/services/owncloud/ocs/conversions/main.go @@ -261,18 +261,18 @@ func LocalGroupIDToString(groupID *grouppb.GroupId) string { } // GetUserManager returns a connection to a user share manager -func GetUserManager(manager string, m map[string]map[string]interface{}) (user.Manager, error) { +func GetUserManager(ctx context.Context, manager string, m map[string]map[string]interface{}) (user.Manager, error) { if f, ok := usermgr.NewFuncs[manager]; ok { - return f(m[manager]) + return f(ctx, m[manager]) } return nil, fmt.Errorf("driver %s not found for user manager", manager) } // GetPublicShareManager returns a connection to a public share manager -func GetPublicShareManager(manager string, m map[string]map[string]interface{}) (publicshare.Manager, error) { +func GetPublicShareManager(ctx context.Context, manager string, m map[string]map[string]interface{}) (publicshare.Manager, error) { if f, ok := publicsharemgr.NewFuncs[manager]; ok { - return f(m[manager]) + return f(ctx, m[manager]) } return nil, fmt.Errorf("driver %s not found for public shares manager", manager) diff --git a/internal/http/services/owncloud/ocs/ocs.go b/internal/http/services/owncloud/ocs/ocs.go index 8a166ee0ba3..c7779865f94 100644 --- a/internal/http/services/owncloud/ocs/ocs.go +++ b/internal/http/services/owncloud/ocs/ocs.go @@ -19,6 +19,7 @@ package ocs import ( + "context" "net/http" "time" @@ -35,7 +36,6 @@ import ( "github.com/cs3org/reva/pkg/rhttp/global" "github.com/go-chi/chi/v5" "github.com/mitchellh/mapstructure" - "github.com/rs/zerolog" ) func init() { @@ -48,7 +48,7 @@ type svc struct { warmupCacheTracker *ttlcache.Cache } -func New(m map[string]interface{}, log *zerolog.Logger) (global.Service, error) { +func New(ctx context.Context, m map[string]interface{}) (global.Service, error) { conf := &config.Config{} if err := mapstructure.Decode(m, conf); err != nil { return nil, err diff --git a/internal/http/services/preferences/preferences.go b/internal/http/services/preferences/preferences.go index 7ae1d3221a1..f8077aeb283 100644 --- a/internal/http/services/preferences/preferences.go +++ b/internal/http/services/preferences/preferences.go @@ -19,6 +19,7 @@ package preferences import ( + "context" "encoding/json" "net/http" @@ -30,7 +31,6 @@ import ( "github.com/cs3org/reva/pkg/sharedconf" "github.com/go-chi/chi/v5" "github.com/mitchellh/mapstructure" - "github.com/rs/zerolog" ) func init() { @@ -56,7 +56,7 @@ type svc struct { } // New returns a new ocmd object -func New(m map[string]interface{}, log *zerolog.Logger) (global.Service, error) { +func New(ctx context.Context, m map[string]interface{}) (global.Service, error) { conf := &Config{} if err := mapstructure.Decode(m, conf); err != nil { diff --git a/internal/http/services/prometheus/prometheus.go b/internal/http/services/prometheus/prometheus.go index 14b6b9ed2f6..26435ba325f 100644 --- a/internal/http/services/prometheus/prometheus.go +++ b/internal/http/services/prometheus/prometheus.go @@ -19,12 +19,12 @@ package prometheus import ( + "context" "net/http" "contrib.go.opencensus.io/exporter/prometheus" "github.com/mitchellh/mapstructure" "github.com/pkg/errors" - "github.com/rs/zerolog" "go.opencensus.io/stats/view" "github.com/cs3org/reva/pkg/rhttp/global" @@ -35,7 +35,7 @@ func init() { } // New returns a new prometheus service -func New(m map[string]interface{}, log *zerolog.Logger) (global.Service, error) { +func New(ctx context.Context, m map[string]interface{}) (global.Service, error) { conf := &config{} if err := mapstructure.Decode(m, conf); err != nil { return nil, err diff --git a/internal/http/services/reverseproxy/reverseproxy.go b/internal/http/services/reverseproxy/reverseproxy.go index 09d7d968a3f..853d1874533 100644 --- a/internal/http/services/reverseproxy/reverseproxy.go +++ b/internal/http/services/reverseproxy/reverseproxy.go @@ -19,6 +19,7 @@ package reverseproxy import ( + "context" "encoding/json" "io/ioutil" "net/http" @@ -29,7 +30,6 @@ import ( "github.com/cs3org/reva/pkg/rhttp/global" "github.com/go-chi/chi/v5" "github.com/mitchellh/mapstructure" - "github.com/rs/zerolog" ) func init() { @@ -56,7 +56,7 @@ type svc struct { } // New returns an instance of the reverse proxy service -func New(m map[string]interface{}, log *zerolog.Logger) (global.Service, error) { +func New(ctx context.Context, m map[string]interface{}) (global.Service, error) { conf := &config{} if err := mapstructure.Decode(m, conf); err != nil { return nil, err diff --git a/internal/http/services/siteacc/siteacc.go b/internal/http/services/siteacc/siteacc.go index 8bed2526ba9..0d8b91873eb 100644 --- a/internal/http/services/siteacc/siteacc.go +++ b/internal/http/services/siteacc/siteacc.go @@ -19,6 +19,7 @@ package siteacc import ( + "context" "net/http" "github.com/cs3org/reva/pkg/siteacc" @@ -104,7 +105,7 @@ func applyDefaultConfig(conf *config.Configuration) { } // New returns a new Site Accounts service. -func New(m map[string]interface{}, log *zerolog.Logger) (global.Service, error) { +func New(ctx context.Context, m map[string]interface{}) (global.Service, error) { // Prepare the configuration conf, err := parseConfig(m) if err != nil { @@ -112,7 +113,7 @@ func New(m map[string]interface{}, log *zerolog.Logger) (global.Service, error) } // Create the sites accounts instance - siteacc, err := siteacc.New(conf, log) + siteacc, err := siteacc.New(ctx, conf) if err != nil { return nil, errors.Wrap(err, "error creating the sites accounts service") } @@ -120,7 +121,6 @@ func New(m map[string]interface{}, log *zerolog.Logger) (global.Service, error) // Create the service s := &svc{ conf: conf, - log: log, siteacc: siteacc, } return s, nil diff --git a/internal/http/services/sysinfo/sysinfo.go b/internal/http/services/sysinfo/sysinfo.go index 65ce0d7949d..382b8e24df8 100644 --- a/internal/http/services/sysinfo/sysinfo.go +++ b/internal/http/services/sysinfo/sysinfo.go @@ -19,11 +19,11 @@ package sysinfo import ( + "context" "net/http" "github.com/mitchellh/mapstructure" "github.com/pkg/errors" - "github.com/rs/zerolog" "github.com/cs3org/reva/pkg/appctx" "github.com/cs3org/reva/pkg/rhttp/global" @@ -95,7 +95,7 @@ func applyDefaultConfig(conf *config) { } // New returns a new SysInfo service. -func New(m map[string]interface{}, log *zerolog.Logger) (global.Service, error) { +func New(ctx context.Context, m map[string]interface{}) (global.Service, error) { // Prepare the configuration conf, err := parseConfig(m) if err != nil { diff --git a/internal/http/services/wellknown/wellknown.go b/internal/http/services/wellknown/wellknown.go index 524cc4cffd9..949757d279f 100644 --- a/internal/http/services/wellknown/wellknown.go +++ b/internal/http/services/wellknown/wellknown.go @@ -19,13 +19,13 @@ package wellknown import ( + "context" "net/http" "github.com/cs3org/reva/pkg/appctx" "github.com/cs3org/reva/pkg/rhttp/global" "github.com/cs3org/reva/pkg/rhttp/router" "github.com/mitchellh/mapstructure" - "github.com/rs/zerolog" ) func init() { @@ -56,7 +56,7 @@ type svc struct { } // New returns a new webuisvc -func New(m map[string]interface{}, log *zerolog.Logger) (global.Service, error) { +func New(ctx context.Context, m map[string]interface{}) (global.Service, error) { conf := &config{} if err := mapstructure.Decode(m, conf); err != nil { return nil, err diff --git a/pkg/app/provider/demo/demo.go b/pkg/app/provider/demo/demo.go index 9376251aa18..91b286b840e 100644 --- a/pkg/app/provider/demo/demo.go +++ b/pkg/app/provider/demo/demo.go @@ -66,7 +66,7 @@ func parseConfig(m map[string]interface{}) (*config, error) { // New returns an implementation to of the app.Provider interface that // connects to an application in the backend. -func New(m map[string]interface{}) (app.Provider, error) { +func New(ctx context.Context, m map[string]interface{}) (app.Provider, error) { c, err := parseConfig(m) if err != nil { return nil, err diff --git a/pkg/app/provider/registry/registry.go b/pkg/app/provider/registry/registry.go index 43d5ed01882..375fe34f0ea 100644 --- a/pkg/app/provider/registry/registry.go +++ b/pkg/app/provider/registry/registry.go @@ -18,11 +18,15 @@ package registry -import "github.com/cs3org/reva/pkg/app" +import ( + "context" + + "github.com/cs3org/reva/pkg/app" +) // NewFunc is the function that app provider implementations // should register to at init time. -type NewFunc func(map[string]interface{}) (app.Provider, error) +type NewFunc func(context.Context, map[string]interface{}) (app.Provider, error) // NewFuncs is a map containing all the registered app providers. var NewFuncs = map[string]NewFunc{} diff --git a/pkg/app/provider/wopi/wopi.go b/pkg/app/provider/wopi/wopi.go index 40dd91cb7aa..ede348e6065 100644 --- a/pkg/app/provider/wopi/wopi.go +++ b/pkg/app/provider/wopi/wopi.go @@ -85,7 +85,7 @@ type wopiProvider struct { // New returns an implementation of the app.Provider interface that // connects to an application in the backend. -func New(m map[string]interface{}) (app.Provider, error) { +func New(ctx context.Context, m map[string]interface{}) (app.Provider, error) { c, err := parseConfig(m) if err != nil { return nil, err diff --git a/pkg/app/registry/registry/registry.go b/pkg/app/registry/registry/registry.go index 0650a2a75f4..e3de8752dbf 100644 --- a/pkg/app/registry/registry/registry.go +++ b/pkg/app/registry/registry/registry.go @@ -18,11 +18,15 @@ package registry -import "github.com/cs3org/reva/pkg/app" +import ( + "context" + + "github.com/cs3org/reva/pkg/app" +) // NewFunc is the function that app provider implementations // should register to at init time. -type NewFunc func(map[string]interface{}) (app.Registry, error) +type NewFunc func(context.Context, map[string]interface{}) (app.Registry, error) // NewFuncs is a map containing all the registered app registry backends. var NewFuncs = map[string]NewFunc{} diff --git a/pkg/app/registry/static/static.go b/pkg/app/registry/static/static.go index 255627b0b7f..8848a7e67a5 100644 --- a/pkg/app/registry/static/static.go +++ b/pkg/app/registry/static/static.go @@ -78,7 +78,7 @@ type manager struct { } // New returns an implementation of the app.Registry interface. -func New(m map[string]interface{}) (app.Registry, error) { +func New(ctx context.Context, m map[string]interface{}) (app.Registry, error) { c, err := parseConfig(m) if err != nil { return nil, err diff --git a/pkg/app/registry/static/static_test.go b/pkg/app/registry/static/static_test.go index f23d4005c58..46634de5e81 100644 --- a/pkg/app/registry/static/static_test.go +++ b/pkg/app/registry/static/static_test.go @@ -178,7 +178,7 @@ func TestFindProviders(t *testing.T) { ctx := context.TODO() - registry, err := New(map[string]interface{}{ + registry, err := New(ctx, map[string]interface{}{ "mime_types": tt.mimeTypes, "providers": tt.regProviders, }) @@ -483,7 +483,7 @@ func TestFindProvidersWithPriority(t *testing.T) { ctx := context.TODO() - registry, err := New(map[string]interface{}{ + registry, err := New(ctx, map[string]interface{}{ "mime_types": tt.mimeTypes, }) if err != nil { @@ -777,7 +777,7 @@ func TestAddProvider(t *testing.T) { ctx := context.TODO() - registry, err := New(map[string]interface{}{ + registry, err := New(ctx, map[string]interface{}{ "providers": tt.initProviders, "mime_types": tt.mimeTypes, }) @@ -1031,7 +1031,7 @@ func TestListSupportedMimeTypes(t *testing.T) { ctx := context.TODO() - registry, err := New(map[string]interface{}{ + registry, err := New(ctx, map[string]interface{}{ "mime_types": tt.mimeTypes, }) if err != nil { @@ -1160,7 +1160,7 @@ func TestSetDefaultProviderForMimeType(t *testing.T) { ctx := context.TODO() - registry, err := New(map[string]interface{}{ + registry, err := New(ctx, map[string]interface{}{ "providers": tt.initProviders, "mime_types": tt.mimeTypes, }) diff --git a/pkg/appauth/manager/json/json.go b/pkg/appauth/manager/json/json.go index 955d8de8b4c..6e0645a5423 100644 --- a/pkg/appauth/manager/json/json.go +++ b/pkg/appauth/manager/json/json.go @@ -58,7 +58,7 @@ type jsonManager struct { } // New returns a new mgr. -func New(m map[string]interface{}) (appauth.Manager, error) { +func New(ctx context.Context, m map[string]interface{}) (appauth.Manager, error) { c, err := parseConfig(m) if err != nil { return nil, errors.Wrap(err, "error creating a new manager") diff --git a/pkg/appauth/manager/json/json_test.go b/pkg/appauth/manager/json/json_test.go index 6cc1ae6e7d2..c0335eeb50f 100644 --- a/pkg/appauth/manager/json/json_test.go +++ b/pkg/appauth/manager/json/json_test.go @@ -123,7 +123,7 @@ func TestNewManager(t *testing.T) { for _, test := range testCases { t.Run(test.description, func(t *testing.T) { - manager, err := New(test.configMap) + manager, err := New(context.Background(), test.configMap) if test.expected == nil { if err == nil { t.Fatalf("no error (but we expected one) while get manager") @@ -240,7 +240,7 @@ func TestGenerateAppPassword(t *testing.T) { tmpFile := createTempFile(t, tempDir, "test.json") defer tmpFile.Close() fill(t, tmpFile, test.prevStateJSON) - manager, err := New(map[string]interface{}{ + manager, err := New(context.Background(), map[string]interface{}{ "file": tmpFile.Name(), "token_strength": len(token), "password_hash_cost": 11, @@ -396,7 +396,7 @@ func TestListAppPasswords(t *testing.T) { if test.stateJSON != "" { fill(t, tmpFile, test.stateJSON) } - manager, err := New(map[string]interface{}{ + manager, err := New(context.Background(), map[string]interface{}{ "file": tmpFile.Name(), "token_strength": len(token), }) @@ -519,7 +519,7 @@ func TestInvalidateAppPassword(t *testing.T) { // initialize temp file with `state_json` content tmpFile := createTempFile(t, tempDir, "test.json") fill(t, tmpFile, test.stateJSON) - manager, err := New(map[string]interface{}{ + manager, err := New(context.Background(), map[string]interface{}{ "file": tmpFile.Name(), "token_strength": 4, }) @@ -676,7 +676,7 @@ func TestGetAppPassword(t *testing.T) { // initialize temp file with `state_json` content tmpFile := createTempFile(t, tempDir, "test.json") fill(t, tmpFile, test.stateJSON) - manager, err := New(map[string]interface{}{ + manager, err := New(context.Background(), map[string]interface{}{ "file": tmpFile.Name(), "token_strength": 4, }) diff --git a/pkg/appauth/manager/registry/registry.go b/pkg/appauth/manager/registry/registry.go index 340eb9b433d..09678b18a0c 100644 --- a/pkg/appauth/manager/registry/registry.go +++ b/pkg/appauth/manager/registry/registry.go @@ -18,11 +18,15 @@ package registry -import "github.com/cs3org/reva/pkg/appauth" +import ( + "context" + + "github.com/cs3org/reva/pkg/appauth" +) // NewFunc is the function that application auth implementations // should register at init time. -type NewFunc func(map[string]interface{}) (appauth.Manager, error) +type NewFunc func(context.Context, map[string]interface{}) (appauth.Manager, error) // NewFuncs is a map containing all the registered application auth managers. var NewFuncs = map[string]NewFunc{} diff --git a/pkg/auth/manager/appauth/appauth.go b/pkg/auth/manager/appauth/appauth.go index e6d25718348..a85e4a26033 100644 --- a/pkg/auth/manager/appauth/appauth.go +++ b/pkg/auth/manager/appauth/appauth.go @@ -42,7 +42,7 @@ type manager struct { } // New returns a new auth Manager. -func New(m map[string]interface{}) (auth.Manager, error) { +func New(ctx context.Context, m map[string]interface{}) (auth.Manager, error) { mgr := &manager{} err := mgr.Configure(m) if err != nil { diff --git a/pkg/auth/manager/demo/demo.go b/pkg/auth/manager/demo/demo.go index c3a23790ca8..9e78a0a8e13 100644 --- a/pkg/auth/manager/demo/demo.go +++ b/pkg/auth/manager/demo/demo.go @@ -44,7 +44,7 @@ type Credentials struct { } // New returns a new auth Manager. -func New(m map[string]interface{}) (auth.Manager, error) { +func New(ctx context.Context, m map[string]interface{}) (auth.Manager, error) { // m not used mgr := &manager{} err := mgr.Configure(m) diff --git a/pkg/auth/manager/demo/demo_test.go b/pkg/auth/manager/demo/demo_test.go index 2b73d153c92..e8e01232df9 100644 --- a/pkg/auth/manager/demo/demo_test.go +++ b/pkg/auth/manager/demo/demo_test.go @@ -27,7 +27,7 @@ var ctx = context.Background() func TestUserManager(t *testing.T) { // get manager - manager, _ := New(nil) + manager, _ := New(context.Background(), nil) // Authenticate - positive test _, _, err := manager.Authenticate(ctx, "einstein", "relativity") diff --git a/pkg/auth/manager/impersonator/impersonator.go b/pkg/auth/manager/impersonator/impersonator.go index 19d7f88000f..ed9053fda4f 100644 --- a/pkg/auth/manager/impersonator/impersonator.go +++ b/pkg/auth/manager/impersonator/impersonator.go @@ -36,7 +36,7 @@ func init() { type mgr struct{} // New returns an auth manager implementation that allows to authenticate with any credentials. -func New(c map[string]interface{}) (auth.Manager, error) { +func New(ctx context.Context, c map[string]interface{}) (auth.Manager, error) { return &mgr{}, nil } diff --git a/pkg/auth/manager/impersonator/impersonator_test.go b/pkg/auth/manager/impersonator/impersonator_test.go index 31fabefab12..6598c0ae859 100644 --- a/pkg/auth/manager/impersonator/impersonator_test.go +++ b/pkg/auth/manager/impersonator/impersonator_test.go @@ -25,7 +25,7 @@ import ( func TestImpersonator(t *testing.T) { ctx := context.Background() - i, _ := New(nil) + i, _ := New(ctx, nil) u, _, err := i.Authenticate(ctx, "admin", "pwd") if err != nil { t.Fatal(err) diff --git a/pkg/auth/manager/json/json.go b/pkg/auth/manager/json/json.go index 1e989fba5f0..b81af4093bd 100644 --- a/pkg/auth/manager/json/json.go +++ b/pkg/auth/manager/json/json.go @@ -78,7 +78,7 @@ func parseConfig(m map[string]interface{}) (*config, error) { } // New returns a new auth Manager. -func New(m map[string]interface{}) (auth.Manager, error) { +func New(ctx context.Context, m map[string]interface{}) (auth.Manager, error) { mgr := &manager{} err := mgr.Configure(m) if err != nil { diff --git a/pkg/auth/manager/json/json_test.go b/pkg/auth/manager/json/json_test.go index 3abaf024a6d..b56ac0883ec 100644 --- a/pkg/auth/manager/json/json_test.go +++ b/pkg/auth/manager/json/json_test.go @@ -61,7 +61,7 @@ func TestGetManagerWithInvalidUser(t *testing.T) { "users": tt.user, } - manager, err := New(input) + manager, err := New(ctx, input) assert.Empty(t, manager) assert.EqualError(t, err, tt.expectedError) @@ -118,7 +118,7 @@ func TestGetManagerWithJSONObject(t *testing.T) { "users": tmpFile.Name(), } - manager, err := New(input) + manager, err := New(ctx, input) if tt.expectManager { assert.Equal(t, nil, err) @@ -181,7 +181,7 @@ func TestGetAuthenticatedManager(t *testing.T) { input := map[string]interface{}{ "users": tempFile.Name(), } - manager, _ := New(input) + manager, _ := New(ctx, input) for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { diff --git a/pkg/auth/manager/ldap/ldap.go b/pkg/auth/manager/ldap/ldap.go index 900d272daf5..110a0773c56 100644 --- a/pkg/auth/manager/ldap/ldap.go +++ b/pkg/auth/manager/ldap/ldap.go @@ -99,7 +99,7 @@ func parseConfig(m map[string]interface{}) (*config, error) { } // New returns an auth manager implementation that connects to a LDAP server to validate the user. -func New(m map[string]interface{}) (auth.Manager, error) { +func New(ctx context.Context, m map[string]interface{}) (auth.Manager, error) { manager := &mgr{} err := manager.Configure(m) if err != nil { diff --git a/pkg/auth/manager/machine/machine.go b/pkg/auth/manager/machine/machine.go index a124bbba478..a2d4f2c966a 100644 --- a/pkg/auth/manager/machine/machine.go +++ b/pkg/auth/manager/machine/machine.go @@ -60,7 +60,7 @@ func (m *manager) Configure(conf map[string]interface{}) error { } // New creates a new manager for the 'machine' authentication -func New(conf map[string]interface{}) (auth.Manager, error) { +func New(ctx context.Context, conf map[string]interface{}) (auth.Manager, error) { m := &manager{} err := m.Configure(conf) if err != nil { diff --git a/pkg/auth/manager/nextcloud/nextcloud.go b/pkg/auth/manager/nextcloud/nextcloud.go index 5d01d264b15..2f236088bad 100644 --- a/pkg/auth/manager/nextcloud/nextcloud.go +++ b/pkg/auth/manager/nextcloud/nextcloud.go @@ -74,7 +74,7 @@ func parseConfig(m map[string]interface{}) (*AuthManagerConfig, error) { } // New returns an auth manager implementation that verifies against a Nextcloud backend. -func New(m map[string]interface{}) (auth.Manager, error) { +func New(ctx context.Context, m map[string]interface{}) (auth.Manager, error) { c, err := parseConfig(m) if err != nil { return nil, err diff --git a/pkg/auth/manager/nextcloud/nextcloud_test.go b/pkg/auth/manager/nextcloud/nextcloud_test.go index e7f7bdfa846..a21d7d5e1f1 100644 --- a/pkg/auth/manager/nextcloud/nextcloud_test.go +++ b/pkg/auth/manager/nextcloud/nextcloud_test.go @@ -116,7 +116,7 @@ var _ = Describe("Nextcloud", func() { Describe("New", func() { It("returns a new instance", func() { fmt.Println(options) - _, err := nextcloud.New(options) + _, err := nextcloud.New(ctx, options) Expect(err).ToNot(HaveOccurred()) }) }) diff --git a/pkg/auth/manager/oidc/oidc.go b/pkg/auth/manager/oidc/oidc.go index d43e0fdfdca..19be602da03 100644 --- a/pkg/auth/manager/oidc/oidc.go +++ b/pkg/auth/manager/oidc/oidc.go @@ -102,7 +102,7 @@ func parseConfig(m map[string]interface{}) (*config, error) { } // New returns an auth manager implementation that verifies the oidc token and obtains the user claims. -func New(m map[string]interface{}) (auth.Manager, error) { +func New(ctx context.Context, m map[string]interface{}) (auth.Manager, error) { manager := &mgr{} err := manager.Configure(m) if err != nil { diff --git a/pkg/auth/manager/owncloudsql/owncloudsql.go b/pkg/auth/manager/owncloudsql/owncloudsql.go index 65bba2c5a35..ba8d574ce5b 100644 --- a/pkg/auth/manager/owncloudsql/owncloudsql.go +++ b/pkg/auth/manager/owncloudsql/owncloudsql.go @@ -66,7 +66,7 @@ type config struct { } // NewMysql returns a new auth manager connection to an owncloud mysql database -func NewMysql(m map[string]interface{}) (auth.Manager, error) { +func NewMysql(ctx context.Context, m map[string]interface{}) (auth.Manager, error) { mgr := &manager{} err := mgr.Configure(m) if err != nil { diff --git a/pkg/auth/manager/publicshares/publicshares.go b/pkg/auth/manager/publicshares/publicshares.go index 1a6dc62a16d..ebdc3dc8627 100644 --- a/pkg/auth/manager/publicshares/publicshares.go +++ b/pkg/auth/manager/publicshares/publicshares.go @@ -60,7 +60,7 @@ func parseConfig(m map[string]interface{}) (*config, error) { } // New returns a new auth Manager. -func New(m map[string]interface{}) (auth.Manager, error) { +func New(ctx context.Context, m map[string]interface{}) (auth.Manager, error) { mgr := &manager{} err := mgr.Configure(m) if err != nil { diff --git a/pkg/auth/manager/registry/registry.go b/pkg/auth/manager/registry/registry.go index 52141f3d072..96cd6af26e2 100644 --- a/pkg/auth/manager/registry/registry.go +++ b/pkg/auth/manager/registry/registry.go @@ -18,11 +18,15 @@ package registry -import "github.com/cs3org/reva/pkg/auth" +import ( + "context" + + "github.com/cs3org/reva/pkg/auth" +) // NewFunc is the function that auth implementations // should register to at init time. -type NewFunc func(map[string]interface{}) (auth.Manager, error) +type NewFunc func(context.Context, map[string]interface{}) (auth.Manager, error) // NewFuncs is a map containing all the registered auth managers. var NewFuncs = map[string]NewFunc{} diff --git a/pkg/auth/registry/registry/registry.go b/pkg/auth/registry/registry/registry.go index 0170885f378..7b651412f04 100644 --- a/pkg/auth/registry/registry/registry.go +++ b/pkg/auth/registry/registry/registry.go @@ -18,11 +18,15 @@ package registry -import "github.com/cs3org/reva/pkg/auth" +import ( + "context" + + "github.com/cs3org/reva/pkg/auth" +) // NewFunc is the function that auth registry implementations // should register at init time. -type NewFunc func(map[string]interface{}) (auth.Registry, error) +type NewFunc func(context.Context, map[string]interface{}) (auth.Registry, error) // NewFuncs is a map containing all the registered auth registries. var NewFuncs = map[string]NewFunc{} diff --git a/pkg/auth/registry/static/static.go b/pkg/auth/registry/static/static.go index cb34592bc8a..9a3100bb805 100644 --- a/pkg/auth/registry/static/static.go +++ b/pkg/auth/registry/static/static.go @@ -81,7 +81,7 @@ func parseConfig(m map[string]interface{}) (*config, error) { } // New returns an implementation of the auth.Registry interface. -func New(m map[string]interface{}) (auth.Registry, error) { +func New(ctx context.Context, m map[string]interface{}) (auth.Registry, error) { c, err := parseConfig(m) if err != nil { return nil, err diff --git a/pkg/cbox/group/rest/rest.go b/pkg/cbox/group/rest/rest.go index 7557b68571b..f81b2ebef8d 100644 --- a/pkg/cbox/group/rest/rest.go +++ b/pkg/cbox/group/rest/rest.go @@ -108,7 +108,7 @@ func parseConfig(m map[string]interface{}) (*config, error) { } // New returns a user manager implementation that makes calls to the GRAPPA API. -func New(m map[string]interface{}) (group.Manager, error) { +func New(ctx context.Context, m map[string]interface{}) (group.Manager, error) { c, err := parseConfig(m) if err != nil { return nil, err diff --git a/pkg/cbox/preferences/sql/sql.go b/pkg/cbox/preferences/sql/sql.go index 67ba2ad7319..c7d2b389c03 100644 --- a/pkg/cbox/preferences/sql/sql.go +++ b/pkg/cbox/preferences/sql/sql.go @@ -48,7 +48,7 @@ type mgr struct { } // New returns an instance of the cbox sql preferences manager. -func New(m map[string]interface{}) (preferences.Manager, error) { +func New(ctx context.Context, m map[string]interface{}) (preferences.Manager, error) { c := &config{} if err := mapstructure.Decode(m, c); err != nil { return nil, err diff --git a/pkg/cbox/publicshare/sql/sql.go b/pkg/cbox/publicshare/sql/sql.go index b7aa9c36c28..91f0e144d63 100644 --- a/pkg/cbox/publicshare/sql/sql.go +++ b/pkg/cbox/publicshare/sql/sql.go @@ -107,7 +107,7 @@ func (m *manager) startJanitorRun() { } // New returns a new public share manager. -func New(m map[string]interface{}) (publicshare.Manager, error) { +func New(ctx context.Context, m map[string]interface{}) (publicshare.Manager, error) { c := &config{} if err := mapstructure.Decode(m, c); err != nil { return nil, err diff --git a/pkg/cbox/share/sql/sql.go b/pkg/cbox/share/sql/sql.go index ab5c3221d08..c709b7c0c8e 100644 --- a/pkg/cbox/share/sql/sql.go +++ b/pkg/cbox/share/sql/sql.go @@ -75,7 +75,7 @@ type mgr struct { } // New returns a new share manager. -func New(m map[string]interface{}) (share.Manager, error) { +func New(ctx context.Context, m map[string]interface{}) (share.Manager, error) { c, err := parseConfig(m) if err != nil { err = errors.Wrap(err, "error creating a new manager") diff --git a/pkg/cbox/storage/eoshomewrapper/eoshomewrapper.go b/pkg/cbox/storage/eoshomewrapper/eoshomewrapper.go index 39a021d92b1..138762d9d75 100644 --- a/pkg/cbox/storage/eoshomewrapper/eoshomewrapper.go +++ b/pkg/cbox/storage/eoshomewrapper/eoshomewrapper.go @@ -65,14 +65,14 @@ func parseConfig(m map[string]interface{}) (*eosfs.Config, string, error) { // New returns an implementation of the storage.FS interface that forms a wrapper // around separate connections to EOS. -func New(m map[string]interface{}) (storage.FS, error) { +func New(ctx context.Context, m map[string]interface{}) (storage.FS, error) { c, t, err := parseConfig(m) if err != nil { return nil, err } c.EnableHome = true - eos, err := eosfs.NewEOSFS(c) + eos, err := eosfs.NewEOSFS(ctx, c) if err != nil { return nil, err } diff --git a/pkg/cbox/storage/eoswrapper/eoswrapper.go b/pkg/cbox/storage/eoswrapper/eoswrapper.go index 4ec0413cf09..d7965c88976 100644 --- a/pkg/cbox/storage/eoswrapper/eoswrapper.go +++ b/pkg/cbox/storage/eoswrapper/eoswrapper.go @@ -82,13 +82,13 @@ func parseConfig(m map[string]interface{}) (*eosfs.Config, string, error) { // New returns an implementation of the storage.FS interface that forms a wrapper // around separate connections to EOS. -func New(m map[string]interface{}) (storage.FS, error) { +func New(ctx context.Context, m map[string]interface{}) (storage.FS, error) { c, t, err := parseConfig(m) if err != nil { return nil, err } - eos, err := eosfs.NewEOSFS(c) + eos, err := eosfs.NewEOSFS(ctx, c) if err != nil { return nil, err } diff --git a/pkg/cbox/user/rest/rest.go b/pkg/cbox/user/rest/rest.go index 47d14d1360c..e20f2dd283b 100644 --- a/pkg/cbox/user/rest/rest.go +++ b/pkg/cbox/user/rest/rest.go @@ -107,7 +107,7 @@ func parseConfig(m map[string]interface{}) (*config, error) { } // New returns a user manager implementation that makes calls to the GRAPPA API. -func New(m map[string]interface{}) (user.Manager, error) { +func New(ctx context.Context, m map[string]interface{}) (user.Manager, error) { mgr := &manager{} err := mgr.Configure(m) if err != nil { diff --git a/pkg/datatx/manager/rclone/rclone.go b/pkg/datatx/manager/rclone/rclone.go index 7644df66582..22420e08539 100644 --- a/pkg/datatx/manager/rclone/rclone.go +++ b/pkg/datatx/manager/rclone/rclone.go @@ -119,7 +119,7 @@ var txEndStatuses = map[string]int32{ } // New returns a new rclone driver -func New(m map[string]interface{}) (txdriver.Manager, error) { +func New(ctx context.Context, m map[string]interface{}) (txdriver.Manager, error) { c, err := parseConfig(m) if err != nil { return nil, err diff --git a/pkg/datatx/manager/registry/registry.go b/pkg/datatx/manager/registry/registry.go index 95a4830b3cf..fceae15d740 100644 --- a/pkg/datatx/manager/registry/registry.go +++ b/pkg/datatx/manager/registry/registry.go @@ -19,12 +19,14 @@ package registry import ( + "context" + "github.com/cs3org/reva/pkg/datatx" ) // NewFunc is the function that datatx implementations // should register at init time. -type NewFunc func(map[string]interface{}) (datatx.Manager, error) +type NewFunc func(context.Context, map[string]interface{}) (datatx.Manager, error) // NewFuncs is a map containing all the registered datatx backends. var NewFuncs = map[string]NewFunc{} diff --git a/pkg/eosclient/eosbinary/eosbinary.go b/pkg/eosclient/eosbinary/eosbinary.go index 2a56a863c48..db50bd7b670 100644 --- a/pkg/eosclient/eosbinary/eosbinary.go +++ b/pkg/eosclient/eosbinary/eosbinary.go @@ -147,7 +147,7 @@ type Client struct { } // New creates a new client with the given options. -func New(opt *Options) (*Client, error) { +func New(ctx context.Context, opt *Options) (*Client, error) { opt.init() c := new(Client) c.opt = opt diff --git a/pkg/eosclient/eosgrpc/eosgrpc.go b/pkg/eosclient/eosgrpc/eosgrpc.go index 2c4f47c2696..b103573aa8c 100644 --- a/pkg/eosclient/eosgrpc/eosgrpc.go +++ b/pkg/eosclient/eosgrpc/eosgrpc.go @@ -38,7 +38,6 @@ import ( "github.com/cs3org/reva/pkg/eosclient" erpc "github.com/cs3org/reva/pkg/eosclient/eosgrpc/eos_grpc" "github.com/cs3org/reva/pkg/errtypes" - "github.com/cs3org/reva/pkg/logger" "github.com/cs3org/reva/pkg/storage/utils/acl" "github.com/google/uuid" "github.com/pkg/errors" @@ -159,18 +158,17 @@ func newgrpc(ctx context.Context, opt *Options) (erpc.EosClient, error) { } // New creates a new client with the given options. -func New(opt *Options, httpOpts *HTTPOptions) (*Client, error) { - tlog := logger.New().With().Int("pid", os.Getpid()).Logger() - tlog.Debug().Str("Creating new eosgrpc client. opt: ", "'"+fmt.Sprintf("%#v", opt)+"' ").Msg("") +func New(ctx context.Context, opt *Options, httpOpts *HTTPOptions) (*Client, error) { + log := appctx.GetLogger(ctx) + log.Debug().Str("Creating new eosgrpc client. opt: ", "'"+fmt.Sprintf("%#v", opt)+"' ").Msg("") opt.init() - httpcl, err := NewEOSHTTPClient(httpOpts) + httpcl, err := NewEOSHTTPClient(ctx, httpOpts) if err != nil { return nil, err } - tctx := appctx.WithLogger(context.Background(), &tlog) - cl, err := newgrpc(tctx, opt) + cl, err := newgrpc(ctx, opt) if err != nil { return nil, err } diff --git a/pkg/eosclient/eosgrpc/eoshttp.go b/pkg/eosclient/eosgrpc/eoshttp.go index e7631b89512..eb20682af51 100644 --- a/pkg/eosclient/eosgrpc/eoshttp.go +++ b/pkg/eosclient/eosgrpc/eoshttp.go @@ -33,7 +33,6 @@ import ( "github.com/cs3org/reva/pkg/appctx" "github.com/cs3org/reva/pkg/eosclient" "github.com/cs3org/reva/pkg/errtypes" - "github.com/cs3org/reva/pkg/logger" ) // HTTPOptions to configure the Client. @@ -134,8 +133,8 @@ type EOSHTTPClient struct { } // NewEOSHTTPClient creates a new client with the given options. -func NewEOSHTTPClient(opt *HTTPOptions) (*EOSHTTPClient, error) { - log := logger.New().With().Int("pid", os.Getpid()).Logger() +func NewEOSHTTPClient(ctx context.Context, opt *HTTPOptions) (*EOSHTTPClient, error) { + log := appctx.GetLogger(ctx) log.Debug().Str("func", "New").Str("Creating new eoshttp client. opt: ", "'"+fmt.Sprintf("%#v", opt)+"' ").Msg("") if opt == nil { diff --git a/pkg/group/manager/json/json.go b/pkg/group/manager/json/json.go index 3e54b7765c9..1e81752cbe7 100644 --- a/pkg/group/manager/json/json.go +++ b/pkg/group/manager/json/json.go @@ -64,7 +64,7 @@ func parseConfig(m map[string]interface{}) (*config, error) { } // New returns a group manager implementation that reads a json file to provide group metadata. -func New(m map[string]interface{}) (group.Manager, error) { +func New(ctx context.Context, m map[string]interface{}) (group.Manager, error) { c, err := parseConfig(m) if err != nil { return nil, err diff --git a/pkg/group/manager/json/json_test.go b/pkg/group/manager/json/json_test.go index 3960276d4af..0be44421103 100644 --- a/pkg/group/manager/json/json_test.go +++ b/pkg/group/manager/json/json_test.go @@ -59,7 +59,7 @@ func TestUserManager(t *testing.T) { input := map[string]interface{}{ "groups": file.Name(), } - _, err = New(input) + _, err = New(ctx, input) if err == nil { t.Fatalf("no error (but we expected one) while get manager") } @@ -87,7 +87,7 @@ func TestUserManager(t *testing.T) { input = map[string]interface{}{ "groups": file.Name(), } - manager, _ := New(input) + manager, _ := New(ctx, input) // setup test data gid := &grouppb.GroupId{OpaqueId: "sailing-lovers"} diff --git a/pkg/group/manager/ldap/ldap.go b/pkg/group/manager/ldap/ldap.go index 9b66d570f79..531e06b0723 100644 --- a/pkg/group/manager/ldap/ldap.go +++ b/pkg/group/manager/ldap/ldap.go @@ -99,7 +99,7 @@ func parseConfig(m map[string]interface{}) (*config, error) { } // New returns a group manager implementation that connects to a LDAP server to provide group metadata. -func New(m map[string]interface{}) (group.Manager, error) { +func New(ctx context.Context, m map[string]interface{}) (group.Manager, error) { c, err := parseConfig(m) if err != nil { return nil, err diff --git a/pkg/group/manager/registry/registry.go b/pkg/group/manager/registry/registry.go index c3b77ad4552..de822bdc8ca 100644 --- a/pkg/group/manager/registry/registry.go +++ b/pkg/group/manager/registry/registry.go @@ -18,11 +18,15 @@ package registry -import "github.com/cs3org/reva/pkg/group" +import ( + "context" + + "github.com/cs3org/reva/pkg/group" +) // NewFunc is the function that group managers // should register at init time. -type NewFunc func(map[string]interface{}) (group.Manager, error) +type NewFunc func(context.Context, map[string]interface{}) (group.Manager, error) // NewFuncs is a map containing all the registered group managers. var NewFuncs = map[string]NewFunc{} diff --git a/pkg/ocm/invite/manager/json/json.go b/pkg/ocm/invite/manager/json/json.go index 076892232f2..9d7332176fd 100644 --- a/pkg/ocm/invite/manager/json/json.go +++ b/pkg/ocm/invite/manager/json/json.go @@ -81,7 +81,7 @@ func (c *config) init() error { } // New returns a new invite manager object. -func New(m map[string]interface{}) (invite.Manager, error) { +func New(ctx context.Context, m map[string]interface{}) (invite.Manager, error) { config, err := parseConfig(m) if err != nil { diff --git a/pkg/ocm/invite/manager/memory/memory.go b/pkg/ocm/invite/manager/memory/memory.go index bf7f8b22fad..e39c49e36b8 100644 --- a/pkg/ocm/invite/manager/memory/memory.go +++ b/pkg/ocm/invite/manager/memory/memory.go @@ -54,7 +54,7 @@ func (c *config) init() { } // New returns a new invite manager. -func New(m map[string]interface{}) (invite.Manager, error) { +func New(ctx context.Context, m map[string]interface{}) (invite.Manager, error) { c := &config{} if err := mapstructure.Decode(m, c); err != nil { err = errors.Wrap(err, "error creating a new manager") diff --git a/pkg/ocm/invite/manager/registry/registry.go b/pkg/ocm/invite/manager/registry/registry.go index 8f750b79d47..fc5785beb5e 100644 --- a/pkg/ocm/invite/manager/registry/registry.go +++ b/pkg/ocm/invite/manager/registry/registry.go @@ -18,11 +18,15 @@ package registry -import "github.com/cs3org/reva/pkg/ocm/invite" +import ( + "context" + + "github.com/cs3org/reva/pkg/ocm/invite" +) // NewFunc is the function that invite managers // should register at init time. -type NewFunc func(map[string]interface{}) (invite.Manager, error) +type NewFunc func(context.Context, map[string]interface{}) (invite.Manager, error) // NewFuncs is a map containing all the registered invite managers. var NewFuncs = map[string]NewFunc{} diff --git a/pkg/ocm/provider/authorizer/json/json.go b/pkg/ocm/provider/authorizer/json/json.go index 575287c5866..9626bc16b7d 100644 --- a/pkg/ocm/provider/authorizer/json/json.go +++ b/pkg/ocm/provider/authorizer/json/json.go @@ -40,7 +40,7 @@ func init() { } // New returns a new authorizer object. -func New(m map[string]interface{}) (provider.Authorizer, error) { +func New(ctx context.Context, m map[string]interface{}) (provider.Authorizer, error) { c := &config{} if err := mapstructure.Decode(m, c); err != nil { err = errors.Wrap(err, "error decoding conf") diff --git a/pkg/ocm/provider/authorizer/mentix/mentix.go b/pkg/ocm/provider/authorizer/mentix/mentix.go index 30ab53c0ef1..493d43dfb37 100644 --- a/pkg/ocm/provider/authorizer/mentix/mentix.go +++ b/pkg/ocm/provider/authorizer/mentix/mentix.go @@ -50,7 +50,7 @@ type Client struct { } // New returns a new authorizer object. -func New(m map[string]interface{}) (provider.Authorizer, error) { +func New(ctx context.Context, m map[string]interface{}) (provider.Authorizer, error) { c := &config{} if err := mapstructure.Decode(m, c); err != nil { err = errors.Wrap(err, "error decoding conf") diff --git a/pkg/ocm/provider/authorizer/open/open.go b/pkg/ocm/provider/authorizer/open/open.go index e3b6e314946..a5f8dcbcb05 100644 --- a/pkg/ocm/provider/authorizer/open/open.go +++ b/pkg/ocm/provider/authorizer/open/open.go @@ -38,7 +38,7 @@ func init() { } // New returns a new authorizer object. -func New(m map[string]interface{}) (provider.Authorizer, error) { +func New(ctx context.Context, m map[string]interface{}) (provider.Authorizer, error) { c := &config{} if err := mapstructure.Decode(m, c); err != nil { err = errors.Wrap(err, "error decoding conf") diff --git a/pkg/ocm/provider/authorizer/registry/registry.go b/pkg/ocm/provider/authorizer/registry/registry.go index c474d5be95d..02546bf9987 100644 --- a/pkg/ocm/provider/authorizer/registry/registry.go +++ b/pkg/ocm/provider/authorizer/registry/registry.go @@ -18,11 +18,15 @@ package registry -import "github.com/cs3org/reva/pkg/ocm/provider" +import ( + "context" + + "github.com/cs3org/reva/pkg/ocm/provider" +) // NewFunc is the function that provider authorizers // should register at init time. -type NewFunc func(map[string]interface{}) (provider.Authorizer, error) +type NewFunc func(context.Context, map[string]interface{}) (provider.Authorizer, error) // NewFuncs is a map containing all the registered provider authorizers. var NewFuncs = map[string]NewFunc{} diff --git a/pkg/ocm/share/manager/json/json.go b/pkg/ocm/share/manager/json/json.go index 25800b867e7..910f6f2af82 100644 --- a/pkg/ocm/share/manager/json/json.go +++ b/pkg/ocm/share/manager/json/json.go @@ -50,7 +50,7 @@ func init() { } // New returns a new authorizer object. -func New(m map[string]interface{}) (share.Manager, error) { +func New(ctx context.Context, m map[string]interface{}) (share.Manager, error) { c, err := parseConfig(m) if err != nil { err = errors.Wrap(err, "error creating a new manager") diff --git a/pkg/ocm/share/manager/nextcloud/nextcloud.go b/pkg/ocm/share/manager/nextcloud/nextcloud.go index 57ce41d7be8..de4475bdced 100644 --- a/pkg/ocm/share/manager/nextcloud/nextcloud.go +++ b/pkg/ocm/share/manager/nextcloud/nextcloud.go @@ -130,7 +130,7 @@ func getUser(ctx context.Context) (*userpb.User, error) { } // New returns a share manager implementation that verifies against a Nextcloud backend. -func New(m map[string]interface{}) (share.Manager, error) { +func New(ctx context.Context, m map[string]interface{}) (share.Manager, error) { c, err := parseConfig(m) if err != nil { return nil, err diff --git a/pkg/ocm/share/manager/nextcloud/nextcloud_test.go b/pkg/ocm/share/manager/nextcloud/nextcloud_test.go index 2f01928ec2b..21e10d3f635 100644 --- a/pkg/ocm/share/manager/nextcloud/nextcloud_test.go +++ b/pkg/ocm/share/manager/nextcloud/nextcloud_test.go @@ -117,7 +117,7 @@ var _ = Describe("Nextcloud", func() { Describe("New", func() { It("returns a new instance", func() { - _, err := nextcloud.New(options) + _, err := nextcloud.New(ctx, options) Expect(err).ToNot(HaveOccurred()) }) }) diff --git a/pkg/ocm/share/manager/registry/registry.go b/pkg/ocm/share/manager/registry/registry.go index 8ea0628fc99..aca3d8fdf72 100644 --- a/pkg/ocm/share/manager/registry/registry.go +++ b/pkg/ocm/share/manager/registry/registry.go @@ -18,11 +18,15 @@ package registry -import "github.com/cs3org/reva/pkg/ocm/share" +import ( + "context" + + "github.com/cs3org/reva/pkg/ocm/share" +) // NewFunc is the function that share managers // should register at init time. -type NewFunc func(map[string]interface{}) (share.Manager, error) +type NewFunc func(context.Context, map[string]interface{}) (share.Manager, error) // NewFuncs is a map containing all the registered share managers. var NewFuncs = map[string]NewFunc{} diff --git a/pkg/permission/manager/demo/demo.go b/pkg/permission/manager/demo/demo.go index 7bb6c107798..18bb449acec 100644 --- a/pkg/permission/manager/demo/demo.go +++ b/pkg/permission/manager/demo/demo.go @@ -19,6 +19,8 @@ package demo import ( + "context" + provider "github.com/cs3org/go-cs3apis/cs3/storage/provider/v1beta1" "github.com/cs3org/reva/pkg/permission" "github.com/cs3org/reva/pkg/permission/manager/registry" @@ -29,7 +31,7 @@ func init() { } // New returns a new demo permission manager -func New(c map[string]interface{}) (permission.Manager, error) { +func New(ctx context.Context, c map[string]interface{}) (permission.Manager, error) { return manager{}, nil } diff --git a/pkg/permission/manager/registry/registry.go b/pkg/permission/manager/registry/registry.go index 26f55bebade..1c806365a88 100644 --- a/pkg/permission/manager/registry/registry.go +++ b/pkg/permission/manager/registry/registry.go @@ -18,11 +18,15 @@ package registry -import "github.com/cs3org/reva/pkg/permission" +import ( + "context" + + "github.com/cs3org/reva/pkg/permission" +) // NewFunc is the function that permission managers // should register at init time. -type NewFunc func(map[string]interface{}) (permission.Manager, error) +type NewFunc func(context.Context, map[string]interface{}) (permission.Manager, error) // NewFuncs is a map containing all the registered share managers. var NewFuncs = map[string]NewFunc{} diff --git a/pkg/preferences/memory/memory.go b/pkg/preferences/memory/memory.go index b2c285e79d9..366b014c5b6 100644 --- a/pkg/preferences/memory/memory.go +++ b/pkg/preferences/memory/memory.go @@ -38,7 +38,7 @@ type mgr struct { } // New returns an instance of the in-memory preferences manager. -func New(m map[string]interface{}) (preferences.Manager, error) { +func New(ctx context.Context, m map[string]interface{}) (preferences.Manager, error) { return &mgr{keys: make(map[string]map[string]string)}, nil } diff --git a/pkg/preferences/registry/registry.go b/pkg/preferences/registry/registry.go index a8ca108f2d4..2792d55541e 100644 --- a/pkg/preferences/registry/registry.go +++ b/pkg/preferences/registry/registry.go @@ -18,11 +18,15 @@ package registry -import "github.com/cs3org/reva/pkg/preferences" +import ( + "context" + + "github.com/cs3org/reva/pkg/preferences" +) // NewFunc is the function that preferences implementations // should register at init time. -type NewFunc func(map[string]interface{}) (preferences.Manager, error) +type NewFunc func(context.Context, map[string]interface{}) (preferences.Manager, error) // NewFuncs is a map containing all the registered preferences implementations. var NewFuncs = map[string]NewFunc{} diff --git a/pkg/publicshare/manager/json/json.go b/pkg/publicshare/manager/json/json.go index e0c537eac6a..3d92893dcd3 100644 --- a/pkg/publicshare/manager/json/json.go +++ b/pkg/publicshare/manager/json/json.go @@ -51,7 +51,7 @@ func init() { } // New returns a new filesystem public shares manager. -func New(c map[string]interface{}) (publicshare.Manager, error) { +func New(ctx context.Context, c map[string]interface{}) (publicshare.Manager, error) { conf := &config{} if err := mapstructure.Decode(c, conf); err != nil { return nil, err diff --git a/pkg/publicshare/manager/memory/memory.go b/pkg/publicshare/manager/memory/memory.go index d298fa8efaa..afd77ef03dc 100644 --- a/pkg/publicshare/manager/memory/memory.go +++ b/pkg/publicshare/manager/memory/memory.go @@ -43,7 +43,7 @@ func init() { } // New returns a new memory manager. -func New(c map[string]interface{}) (publicshare.Manager, error) { +func New(ctx context.Context, c map[string]interface{}) (publicshare.Manager, error) { return &manager{ shares: sync.Map{}, }, nil diff --git a/pkg/publicshare/manager/registry/registry.go b/pkg/publicshare/manager/registry/registry.go index fa9f1d1a93e..a0f24dea317 100644 --- a/pkg/publicshare/manager/registry/registry.go +++ b/pkg/publicshare/manager/registry/registry.go @@ -18,11 +18,15 @@ package registry -import "github.com/cs3org/reva/pkg/publicshare" +import ( + "context" + + "github.com/cs3org/reva/pkg/publicshare" +) // NewFunc is the function that share managers // should register at init time. -type NewFunc func(map[string]interface{}) (publicshare.Manager, error) +type NewFunc func(context.Context, map[string]interface{}) (publicshare.Manager, error) // NewFuncs is a map containing all the registered share managers. var NewFuncs = map[string]NewFunc{} diff --git a/pkg/registry/config_test.go b/pkg/registry/config_test.go index d981677da9c..a065974d5c9 100644 --- a/pkg/registry/config_test.go +++ b/pkg/registry/config_test.go @@ -28,20 +28,20 @@ config example: --- services: - authprovider: - basic: - name: auth-basic - nodes: - - address: 0.0.0.0:1234 - metadata: - version: v0.1.0 - bearer: - name: auth-bearer - nodes: - - address: 0.0.0.0:5678 - metadata: - version: v0.1.0 + authprovider: + basic: + name: auth-basic + nodes: + - address: 0.0.0.0:1234 + metadata: + version: v0.1.0 + bearer: + name: auth-bearer + nodes: + - address: 0.0.0.0:5678 + metadata: + version: v0.1.0 */ func TestParseConfig(t *testing.T) { type args struct { diff --git a/pkg/rgrpc/rgrpc.go b/pkg/rgrpc/rgrpc.go index 05fa9521538..4065cc96119 100644 --- a/pkg/rgrpc/rgrpc.go +++ b/pkg/rgrpc/rgrpc.go @@ -19,6 +19,7 @@ package rgrpc import ( + "context" "fmt" "io" "net" @@ -30,6 +31,7 @@ import ( "github.com/cs3org/reva/internal/grpc/interceptors/recovery" "github.com/cs3org/reva/internal/grpc/interceptors/token" "github.com/cs3org/reva/internal/grpc/interceptors/useragent" + rappctx "github.com/cs3org/reva/pkg/appctx" "github.com/cs3org/reva/pkg/sharedconf" rtrace "github.com/cs3org/reva/pkg/trace" grpc_middleware "github.com/grpc-ecosystem/go-grpc-middleware" @@ -73,7 +75,7 @@ func Register(name string, newFunc NewService) { // NewService is the function that gRPC services need to register at init time. // It returns an io.Closer to close the service and a list of service endpoints that need to be unprotected. -type NewService func(conf map[string]interface{}, ss *grpc.Server) (Service, error) +type NewService func(ctx context.Context, conf map[string]interface{}, ss *grpc.Server) (Service, error) // Service represents a grpc service. type Service interface { @@ -137,14 +139,15 @@ func NewServer(m interface{}, log zerolog.Logger) (*Server, error) { } // Start starts the server. -func (s *Server) Start(ln net.Listener) error { - if err := s.registerServices(); err != nil { +func (s *Server) Start(ctx context.Context, ln net.Listener) error { + log := rappctx.GetLogger(ctx) + if err := s.registerServices(ctx); err != nil { err = errors.Wrap(err, "unable to register services") return err } s.listener = ln - s.log.Info().Msgf("grpc server listening at %s:%s", s.Network(), s.Address()) + log.Info().Msgf("grpc server listening at %s:%s", s.Network(), s.Address()) err := s.s.Serve(s.listener) if err != nil { err = errors.Wrap(err, "serve failed") @@ -154,28 +157,20 @@ func (s *Server) Start(ln net.Listener) error { } func (s *Server) isInterceptorEnabled(name string) bool { - for k := range s.conf.Interceptors { - if k == name { - return true - } - } - return false + _, ok := s.conf.Interceptors[name] + return ok } func (s *Server) isServiceEnabled(svcName string) bool { - for key := range Services { - if key == svcName { - return true - } - } - return false + _, ok := Services[svcName] + return ok } -func (s *Server) registerServices() error { +func (s *Server) registerServices(ctx context.Context) error { for svcName := range s.conf.Services { if s.isServiceEnabled(svcName) { newFunc := Services[svcName] - svc, err := newFunc(s.conf.Services[svcName], s.s) + svc, err := newFunc(ctx, s.conf.Services[svcName], s.s) if err != nil { return errors.Wrapf(err, "rgrpc: grpc service %s could not be started,", svcName) } diff --git a/pkg/rhttp/global/global.go b/pkg/rhttp/global/global.go index a3706abdf0d..e09a8c10b0b 100644 --- a/pkg/rhttp/global/global.go +++ b/pkg/rhttp/global/global.go @@ -19,16 +19,15 @@ package global import ( + "context" "net/http" - - "github.com/rs/zerolog" ) // NewMiddlewares contains all the registered new middleware functions. var NewMiddlewares = map[string]NewMiddleware{} // NewMiddleware is the function that HTTP middlewares need to register at init time. -type NewMiddleware func(conf map[string]interface{}) (Middleware, int, error) +type NewMiddleware func(ctx context.Context, conf map[string]interface{}) (Middleware, int, error) // RegisterMiddleware registers a new HTTP middleware and its new function. func RegisterMiddleware(name string, n NewMiddleware) { @@ -47,7 +46,7 @@ func Register(name string, newFunc NewService) { } // NewService is the function that HTTP services need to register at init time. -type NewService func(conf map[string]interface{}, log *zerolog.Logger) (Service, error) +type NewService func(ctx context.Context, conf map[string]interface{}) (Service, error) // Service represents a HTTP service. type Service interface { diff --git a/pkg/rhttp/rhttp.go b/pkg/rhttp/rhttp.go index ba852572f17..d59fdbd5d9c 100644 --- a/pkg/rhttp/rhttp.go +++ b/pkg/rhttp/rhttp.go @@ -32,6 +32,7 @@ import ( "github.com/cs3org/reva/internal/http/interceptors/auth" "github.com/cs3org/reva/internal/http/interceptors/log" "github.com/cs3org/reva/internal/http/interceptors/providerauthorizer" + rappctx "github.com/cs3org/reva/pkg/appctx" "github.com/cs3org/reva/pkg/rhttp/global" rtrace "github.com/cs3org/reva/pkg/trace" "github.com/mitchellh/mapstructure" @@ -94,16 +95,17 @@ func (c *config) init() { } // Start starts the server -func (s *Server) Start(ln net.Listener) error { - if err := s.registerServices(); err != nil { +func (s *Server) Start(ctx context.Context, ln net.Listener) error { + log := rappctx.GetLogger(ctx) + if err := s.registerServices(ctx); err != nil { return err } - if err := s.registerMiddlewares(); err != nil { + if err := s.registerMiddlewares(ctx); err != nil { return err } - handler, err := s.getHandler() + handler, err := s.getHandler(ctx) if err != nil { return errors.Wrap(err, "rhttp: error creating http handler") } @@ -112,10 +114,10 @@ func (s *Server) Start(ln net.Listener) error { s.listener = ln if (s.conf.CertFile != "") && (s.conf.KeyFile != "") { - s.log.Info().Msgf("https server listening at https://%s '%s' '%s'", s.conf.Address, s.conf.CertFile, s.conf.KeyFile) + log.Info().Msgf("https server listening at https://%s '%s' '%s'", s.conf.Address, s.conf.CertFile, s.conf.KeyFile) err = s.httpServer.ServeTLS(s.listener, s.conf.CertFile, s.conf.KeyFile) } else { - s.log.Info().Msgf("http server listening at http://%s '%s' '%s'", s.conf.Address, s.conf.CertFile, s.conf.KeyFile) + log.Info().Msgf("http server listening at http://%s '%s' '%s'", s.conf.Address, s.conf.CertFile, s.conf.KeyFile) err = s.httpServer.Serve(s.listener) } if err == nil || err == http.ErrServerClosed { @@ -170,11 +172,11 @@ type middlewareTriple struct { Middleware global.Middleware } -func (s *Server) registerMiddlewares() error { +func (s *Server) registerMiddlewares(ctx context.Context) error { middlewares := []*middlewareTriple{} for name, newFunc := range global.NewMiddlewares { if s.isMiddlewareEnabled(name) { - m, prio, err := newFunc(s.conf.Middlewares[name]) + m, prio, err := newFunc(ctx, s.conf.Middlewares[name]) if err != nil { err = errors.Wrapf(err, "error creating new middleware: %s,", name) return err @@ -196,11 +198,11 @@ func (s *Server) isMiddlewareEnabled(name string) bool { return ok } -func (s *Server) registerServices() error { +func (s *Server) registerServices(ctx context.Context) error { for svcName := range s.conf.Services { if s.isServiceEnabled(svcName) { newFunc := global.Services[svcName] - svc, err := newFunc(s.conf.Services[svcName], &s.log) + svc, err := newFunc(ctx, s.conf.Services[svcName]) if err != nil { err = errors.Wrapf(err, "http service %s could not be started,", svcName) return err @@ -290,7 +292,7 @@ func getSubURL(url, prefix string) string { return url[len(prefix):] } -func (s *Server) getHandler() (http.Handler, error) { +func (s *Server) getHandler(ctx context.Context) (http.Handler, error) { h := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { if h, ok := s.handlers[r.URL.Path]; ok { s.log.Debug().Msgf("http routing: url=%s", r.URL.Path) @@ -335,7 +337,7 @@ func (s *Server) getHandler() (http.Handler, error) { // and cannot be configured from the configuration. coreMiddlewares := []*middlewareTriple{} - providerAuthMiddle, err := addProviderAuthMiddleware(s.conf, s.unprotected) + providerAuthMiddle, err := addProviderAuthMiddleware(ctx, s.conf, s.unprotected) if err != nil { return nil, errors.Wrap(err, "rhttp: error creating providerauthorizer middleware") } @@ -366,12 +368,12 @@ func traceHandler(name string, h http.Handler) http.Handler { }) } -func addProviderAuthMiddleware(conf *config, unprotected []string) (global.Middleware, error) { +func addProviderAuthMiddleware(ctx context.Context, conf *config, unprotected []string) (global.Middleware, error) { _, ocmdRegistered := global.Services["ocmd"] _, ocmdEnabled := conf.Services["ocmd"] ocmdPrefix, _ := conf.Services["ocmd"]["prefix"].(string) if ocmdRegistered && ocmdEnabled { - return providerauthorizer.New(conf.Middlewares["providerauthorizer"], unprotected, ocmdPrefix) + return providerauthorizer.New(ctx, conf.Middlewares["providerauthorizer"], unprotected, ocmdPrefix) } return nil, nil } diff --git a/pkg/share/manager/json/json.go b/pkg/share/manager/json/json.go index 55fcf2c691b..918d9aa7fb8 100644 --- a/pkg/share/manager/json/json.go +++ b/pkg/share/manager/json/json.go @@ -46,7 +46,7 @@ func init() { } // New returns a new mgr. -func New(m map[string]interface{}) (share.Manager, error) { +func New(ctx context.Context, m map[string]interface{}) (share.Manager, error) { c, err := parseConfig(m) if err != nil { err = errors.Wrap(err, "error creating a new manager") diff --git a/pkg/share/manager/memory/memory.go b/pkg/share/manager/memory/memory.go index e292b73d722..884608212ee 100644 --- a/pkg/share/manager/memory/memory.go +++ b/pkg/share/manager/memory/memory.go @@ -45,7 +45,7 @@ func init() { } // New returns a new manager. -func New(c map[string]interface{}) (share.Manager, error) { +func New(ctx context.Context, c map[string]interface{}) (share.Manager, error) { state := map[string]map[*collaboration.ShareId]collaboration.ShareState{} return &manager{ shareState: state, diff --git a/pkg/share/manager/registry/registry.go b/pkg/share/manager/registry/registry.go index 952fc7b8f20..9c3542ed341 100644 --- a/pkg/share/manager/registry/registry.go +++ b/pkg/share/manager/registry/registry.go @@ -18,11 +18,15 @@ package registry -import "github.com/cs3org/reva/pkg/share" +import ( + "context" + + "github.com/cs3org/reva/pkg/share" +) // NewFunc is the function that share managers // should register at init time. -type NewFunc func(map[string]interface{}) (share.Manager, error) +type NewFunc func(context.Context, map[string]interface{}) (share.Manager, error) // NewFuncs is a map containing all the registered share managers. var NewFuncs = map[string]NewFunc{} diff --git a/pkg/share/manager/sql/sql.go b/pkg/share/manager/sql/sql.go index 1164105637a..0bd91cdd55e 100644 --- a/pkg/share/manager/sql/sql.go +++ b/pkg/share/manager/sql/sql.go @@ -70,7 +70,7 @@ type mgr struct { } // NewMysql returns a new share manager connection to a mysql database -func NewMysql(m map[string]interface{}) (share.Manager, error) { +func NewMysql(ctx context.Context, m map[string]interface{}) (share.Manager, error) { c, err := parseConfig(m) if err != nil { err = errors.Wrap(err, "error creating a new manager") diff --git a/pkg/siteacc/data/filestorage.go b/pkg/siteacc/data/filestorage.go index 6c72796a78b..e53d1f1220e 100644 --- a/pkg/siteacc/data/filestorage.go +++ b/pkg/siteacc/data/filestorage.go @@ -26,7 +26,6 @@ import ( "github.com/cs3org/reva/pkg/siteacc/config" "github.com/pkg/errors" - "github.com/rs/zerolog" ) // FileStorage implements a filePath-based storage. @@ -34,23 +33,17 @@ type FileStorage struct { Storage conf *config.Configuration - log *zerolog.Logger operatorsFilePath string accountsFilePath string } -func (storage *FileStorage) initialize(conf *config.Configuration, log *zerolog.Logger) error { +func (storage *FileStorage) initialize(conf *config.Configuration) error { if conf == nil { return errors.Errorf("no configuration provided") } storage.conf = conf - if log == nil { - return errors.Errorf("no logger provided") - } - storage.log = log - if conf.Storage.File.OperatorsFile == "" { return errors.Errorf("no operators file set in the configuration") } @@ -156,9 +149,9 @@ func (storage *FileStorage) AccountRemoved(account *Account) { } // NewFileStorage creates a new file storage. -func NewFileStorage(conf *config.Configuration, log *zerolog.Logger) (*FileStorage, error) { +func NewFileStorage(conf *config.Configuration) (*FileStorage, error) { storage := &FileStorage{} - if err := storage.initialize(conf, log); err != nil { + if err := storage.initialize(conf); err != nil { return nil, errors.Wrap(err, "unable to initialize the file storage") } return storage, nil diff --git a/pkg/siteacc/siteacc.go b/pkg/siteacc/siteacc.go index f97ed906bad..ec6a49321e1 100644 --- a/pkg/siteacc/siteacc.go +++ b/pkg/siteacc/siteacc.go @@ -19,10 +19,12 @@ package siteacc import ( + "context" "fmt" "html" "net/http" + "github.com/cs3org/reva/pkg/appctx" "github.com/cs3org/reva/pkg/siteacc/alerting" "github.com/cs3org/reva/pkg/siteacc/config" "github.com/cs3org/reva/pkg/siteacc/data" @@ -31,13 +33,11 @@ import ( accpanel "github.com/cs3org/reva/pkg/siteacc/panels/account" "github.com/cs3org/reva/pkg/siteacc/panels/admin" "github.com/pkg/errors" - "github.com/rs/zerolog" ) // SiteAccounts represents the main Site Accounts service object. type SiteAccounts struct { conf *config.Configuration - log *zerolog.Logger sessions *acchtml.SessionManager @@ -53,16 +53,13 @@ type SiteAccounts struct { accountPanel *accpanel.Panel } -func (siteacc *SiteAccounts) initialize(conf *config.Configuration, log *zerolog.Logger) error { +func (siteacc *SiteAccounts) initialize(ctx context.Context, conf *config.Configuration) error { if conf == nil { return fmt.Errorf("no configuration provided") } siteacc.conf = conf - if log == nil { - return fmt.Errorf("no logger provided") - } - siteacc.log = log + log := appctx.GetLogger(ctx) // Create the session mananger sessions, err := acchtml.NewSessionManager("siteacc_session", conf, log) @@ -128,11 +125,13 @@ func (siteacc *SiteAccounts) RequestHandler() http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { defer r.Body.Close() + log := appctx.GetLogger(r.Context()) + // Get the active session for the request (or create a new one); a valid session object will always be returned siteacc.sessions.PurgeSessions() // Remove expired sessions first session, err := siteacc.sessions.HandleRequest(w, r) if err != nil { - siteacc.log.Err(err).Msg("an error occurred while handling sessions") + log.Err(err).Msg("an error occurred while handling sessions") } epHandled := false @@ -200,17 +199,17 @@ func (siteacc *SiteAccounts) GetPublicEndpoints() []string { func (siteacc *SiteAccounts) createStorage(driver string) (data.Storage, error) { if driver == "file" { - return data.NewFileStorage(siteacc.conf, siteacc.log) + return data.NewFileStorage(siteacc.conf) } return nil, errors.Errorf("unknown storage driver %v", driver) } // New returns a new Site Accounts service instance. -func New(conf *config.Configuration, log *zerolog.Logger) (*SiteAccounts, error) { +func New(ctx context.Context, conf *config.Configuration) (*SiteAccounts, error) { // Configure the accounts service siteacc := new(SiteAccounts) - if err := siteacc.initialize(conf, log); err != nil { + if err := siteacc.initialize(ctx, conf); err != nil { return nil, fmt.Errorf("unable to initialize sites accounts: %v", err) } return siteacc, nil diff --git a/pkg/storage/fs/cback/cback.go b/pkg/storage/fs/cback/cback.go index 63d2c162bbf..d56a9111952 100644 --- a/pkg/storage/fs/cback/cback.go +++ b/pkg/storage/fs/cback/cback.go @@ -50,7 +50,7 @@ func init() { // New returns an implementation to the storage.FS interface that talks to // cback -func New(m map[string]interface{}) (fs storage.FS, err error) { +func New(ctx context.Context, m map[string]interface{}) (fs storage.FS, err error) { c := &Options{} if err = mapstructure.Decode(m, c); err != nil { diff --git a/pkg/storage/fs/cephfs/connections.go b/pkg/storage/fs/cephfs/connections.go index ef378704907..9450cd0a114 100644 --- a/pkg/storage/fs/cephfs/connections.go +++ b/pkg/storage/fs/cephfs/connections.go @@ -54,7 +54,7 @@ type connections struct { groupCache *ristretto.Cache } -//TODO: make configurable/add to options +// TODO: make configurable/add to options var usrLimit int64 = 1e4 func newCache() (c *connections, err error) { diff --git a/pkg/storage/fs/cephfs/unsupported.go b/pkg/storage/fs/cephfs/unsupported.go index a337f3f7895..d88d1e7cede 100644 --- a/pkg/storage/fs/cephfs/unsupported.go +++ b/pkg/storage/fs/cephfs/unsupported.go @@ -22,6 +22,8 @@ package cephfs import ( + "context" + "github.com/pkg/errors" "github.com/cs3org/reva/pkg/storage" @@ -34,6 +36,6 @@ func init() { // New returns an implementation to of the storage.FS interface that talk to // a ceph filesystem. -func New(m map[string]interface{}) (storage.FS, error) { +func New(ctx context.Context, m map[string]interface{}) (storage.FS, error) { return nil, errors.New("cephfs: revad was compiled without CephFS support") } diff --git a/pkg/storage/fs/eos/eos.go b/pkg/storage/fs/eos/eos.go index 1be32bab77c..b1e66f9fecf 100644 --- a/pkg/storage/fs/eos/eos.go +++ b/pkg/storage/fs/eos/eos.go @@ -19,6 +19,8 @@ package eos import ( + "context" + "github.com/cs3org/reva/pkg/storage" "github.com/cs3org/reva/pkg/storage/fs/registry" "github.com/cs3org/reva/pkg/storage/utils/eosfs" @@ -46,11 +48,11 @@ func parseConfig(m map[string]interface{}) (*eosfs.Config, error) { } // New returns a new implementation of the storage.FS interface that connects to EOS. -func New(m map[string]interface{}) (storage.FS, error) { +func New(ctx context.Context, m map[string]interface{}) (storage.FS, error) { c, err := parseConfig(m) if err != nil { return nil, err } - return eosfs.NewEOSFS(c) + return eosfs.NewEOSFS(ctx, c) } diff --git a/pkg/storage/fs/eosgrpc/eosgrpc.go b/pkg/storage/fs/eosgrpc/eosgrpc.go index b47889bec6b..acb2e087a78 100644 --- a/pkg/storage/fs/eosgrpc/eosgrpc.go +++ b/pkg/storage/fs/eosgrpc/eosgrpc.go @@ -19,6 +19,8 @@ package eosgrpc import ( + "context" + "github.com/cs3org/reva/pkg/storage" "github.com/cs3org/reva/pkg/storage/fs/registry" "github.com/cs3org/reva/pkg/storage/utils/eosfs" @@ -46,12 +48,12 @@ func parseConfig(m map[string]interface{}) (*eosfs.Config, error) { } // New returns a new implementation of the storage.FS interface that connects to EOS. -func New(m map[string]interface{}) (storage.FS, error) { +func New(ctx context.Context, m map[string]interface{}) (storage.FS, error) { c, err := parseConfig(m) if err != nil { return nil, err } c.UseGRPC = true - return eosfs.NewEOSFS(c) + return eosfs.NewEOSFS(ctx, c) } diff --git a/pkg/storage/fs/eosgrpchome/eosgrpchome.go b/pkg/storage/fs/eosgrpchome/eosgrpchome.go index 245fdfe5dac..bc0a2db0250 100644 --- a/pkg/storage/fs/eosgrpchome/eosgrpchome.go +++ b/pkg/storage/fs/eosgrpchome/eosgrpchome.go @@ -19,6 +19,8 @@ package eosgrpchome import ( + "context" + "github.com/cs3org/reva/pkg/storage" "github.com/cs3org/reva/pkg/storage/fs/registry" "github.com/cs3org/reva/pkg/storage/utils/eosfs" @@ -46,7 +48,7 @@ func parseConfig(m map[string]interface{}) (*eosfs.Config, error) { } // New returns a new implementation of the storage.FS interface that connects to EOS. -func New(m map[string]interface{}) (storage.FS, error) { +func New(ctx context.Context, m map[string]interface{}) (storage.FS, error) { c, err := parseConfig(m) if err != nil { return nil, err @@ -54,5 +56,5 @@ func New(m map[string]interface{}) (storage.FS, error) { c.UseGRPC = true c.EnableHome = true - return eosfs.NewEOSFS(c) + return eosfs.NewEOSFS(ctx, c) } diff --git a/pkg/storage/fs/eoshome/eoshome.go b/pkg/storage/fs/eoshome/eoshome.go index 69ab5b0f632..aef9b6f13a2 100644 --- a/pkg/storage/fs/eoshome/eoshome.go +++ b/pkg/storage/fs/eoshome/eoshome.go @@ -19,6 +19,8 @@ package eoshome import ( + "context" + "github.com/cs3org/reva/pkg/storage" "github.com/cs3org/reva/pkg/storage/fs/registry" "github.com/cs3org/reva/pkg/storage/utils/eosfs" @@ -46,12 +48,12 @@ func parseConfig(m map[string]interface{}) (*eosfs.Config, error) { } // New returns a new implementation of the storage.FS interface that connects to EOS. -func New(m map[string]interface{}) (storage.FS, error) { +func New(ctx context.Context, m map[string]interface{}) (storage.FS, error) { c, err := parseConfig(m) if err != nil { return nil, err } c.EnableHome = true - return eosfs.NewEOSFS(c) + return eosfs.NewEOSFS(ctx, c) } diff --git a/pkg/storage/fs/local/local.go b/pkg/storage/fs/local/local.go index 0851abb7f73..1a73e31d776 100644 --- a/pkg/storage/fs/local/local.go +++ b/pkg/storage/fs/local/local.go @@ -19,6 +19,8 @@ package local import ( + "context" + "github.com/cs3org/reva/pkg/storage" "github.com/cs3org/reva/pkg/storage/fs/registry" "github.com/cs3org/reva/pkg/storage/utils/localfs" @@ -46,7 +48,7 @@ func parseConfig(m map[string]interface{}) (*config, error) { // New returns an implementation to of the storage.FS interface that talks to // a local filesystem with user homes disabled. -func New(m map[string]interface{}) (storage.FS, error) { +func New(ctx context.Context, m map[string]interface{}) (storage.FS, error) { c, err := parseConfig(m) if err != nil { return nil, err diff --git a/pkg/storage/fs/localhome/localhome.go b/pkg/storage/fs/localhome/localhome.go index c50b4faae74..738b6f90fbd 100644 --- a/pkg/storage/fs/localhome/localhome.go +++ b/pkg/storage/fs/localhome/localhome.go @@ -19,6 +19,8 @@ package localhome import ( + "context" + "github.com/cs3org/reva/pkg/storage" "github.com/cs3org/reva/pkg/storage/fs/registry" "github.com/cs3org/reva/pkg/storage/utils/localfs" @@ -47,7 +49,7 @@ func parseConfig(m map[string]interface{}) (*config, error) { // New returns an implementation to of the storage.FS interface that talks to // a local filesystem with user homes. -func New(m map[string]interface{}) (storage.FS, error) { +func New(ctx context.Context, m map[string]interface{}) (storage.FS, error) { c, err := parseConfig(m) if err != nil { return nil, err diff --git a/pkg/storage/fs/nextcloud/nextcloud.go b/pkg/storage/fs/nextcloud/nextcloud.go index 71c36173735..1edf6bc6c64 100644 --- a/pkg/storage/fs/nextcloud/nextcloud.go +++ b/pkg/storage/fs/nextcloud/nextcloud.go @@ -68,7 +68,7 @@ func parseConfig(m map[string]interface{}) (*StorageDriverConfig, error) { // New returns an implementation to of the storage.FS interface that talks to // a Nextcloud instance over http. -func New(m map[string]interface{}) (storage.FS, error) { +func New(ctx context.Context, m map[string]interface{}) (storage.FS, error) { conf, err := parseConfig(m) if err != nil { return nil, err diff --git a/pkg/storage/fs/nextcloud/nextcloud_test.go b/pkg/storage/fs/nextcloud/nextcloud_test.go index aa0e0a451d0..66c0718a07d 100644 --- a/pkg/storage/fs/nextcloud/nextcloud_test.go +++ b/pkg/storage/fs/nextcloud/nextcloud_test.go @@ -118,7 +118,7 @@ var _ = Describe("Nextcloud", func() { Describe("New", func() { It("returns a new instance", func() { - _, err := nextcloud.New(options) + _, err := nextcloud.New(ctx, options) Expect(err).ToNot(HaveOccurred()) }) }) diff --git a/pkg/storage/fs/ocis/ocis.go b/pkg/storage/fs/ocis/ocis.go index bbce1e30e24..e8023a21caa 100644 --- a/pkg/storage/fs/ocis/ocis.go +++ b/pkg/storage/fs/ocis/ocis.go @@ -19,6 +19,7 @@ package ocis import ( + "context" "path" "github.com/cs3org/reva/pkg/storage" @@ -34,7 +35,7 @@ func init() { // New returns an implementation to of the storage.FS interface that talk to // a local filesystem. -func New(m map[string]interface{}) (storage.FS, error) { +func New(ctx context.Context, m map[string]interface{}) (storage.FS, error) { o, err := options.New(m) if err != nil { return nil, err diff --git a/pkg/storage/fs/ocis/ocis_test.go b/pkg/storage/fs/ocis/ocis_test.go index e2f4e32efcf..547d71c9f36 100644 --- a/pkg/storage/fs/ocis/ocis_test.go +++ b/pkg/storage/fs/ocis/ocis_test.go @@ -19,6 +19,7 @@ package ocis_test import ( + "context" "os" "github.com/cs3org/reva/pkg/storage/fs/ocis" @@ -53,7 +54,7 @@ var _ = Describe("Ocis", func() { Describe("New", func() { It("returns a new instance", func() { - _, err := ocis.New(options) + _, err := ocis.New(context.Background(), options) Expect(err).ToNot(HaveOccurred()) }) }) diff --git a/pkg/storage/fs/owncloud/owncloud.go b/pkg/storage/fs/owncloud/owncloud.go index 1b74b7ab43f..d0c2e82454a 100644 --- a/pkg/storage/fs/owncloud/owncloud.go +++ b/pkg/storage/fs/owncloud/owncloud.go @@ -158,7 +158,7 @@ func (c *config) init(m map[string]interface{}) { // New returns an implementation to of the storage.FS interface that talk to // a local filesystem. -func New(m map[string]interface{}) (storage.FS, error) { +func New(ctx context.Context, m map[string]interface{}) (storage.FS, error) { c, err := parseConfig(m) if err != nil { return nil, err diff --git a/pkg/storage/fs/owncloudsql/owncloudsql.go b/pkg/storage/fs/owncloudsql/owncloudsql.go index ebf2796c496..dc745d4b451 100644 --- a/pkg/storage/fs/owncloudsql/owncloudsql.go +++ b/pkg/storage/fs/owncloudsql/owncloudsql.go @@ -151,7 +151,7 @@ func (c *config) init(m map[string]interface{}) { // New returns an implementation to of the storage.FS interface that talk to // a local filesystem. -func New(m map[string]interface{}) (storage.FS, error) { +func New(ctx context.Context, m map[string]interface{}) (storage.FS, error) { c, err := parseConfig(m) if err != nil { return nil, err diff --git a/pkg/storage/fs/registry/registry.go b/pkg/storage/fs/registry/registry.go index e9aa41100b5..381ca255007 100644 --- a/pkg/storage/fs/registry/registry.go +++ b/pkg/storage/fs/registry/registry.go @@ -18,11 +18,15 @@ package registry -import "github.com/cs3org/reva/pkg/storage" +import ( + "context" + + "github.com/cs3org/reva/pkg/storage" +) // NewFunc is the function that storage implementations // should register at init time. -type NewFunc func(map[string]interface{}) (storage.FS, error) +type NewFunc func(context.Context, map[string]interface{}) (storage.FS, error) // NewFuncs is a map containing all the registered storage backends. var NewFuncs = map[string]NewFunc{} diff --git a/pkg/storage/fs/s3/s3.go b/pkg/storage/fs/s3/s3.go index 32a90fe4283..ee4356f587c 100644 --- a/pkg/storage/fs/s3/s3.go +++ b/pkg/storage/fs/s3/s3.go @@ -69,7 +69,7 @@ func parseConfig(m map[string]interface{}) (*config, error) { // New returns an implementation to of the storage.FS interface that talk to // a s3 api. -func New(m map[string]interface{}) (storage.FS, error) { +func New(ctx context.Context, m map[string]interface{}) (storage.FS, error) { c, err := parseConfig(m) if err != nil { return nil, err diff --git a/pkg/storage/fs/s3ng/s3ng.go b/pkg/storage/fs/s3ng/s3ng.go index 30bc250ff70..e14dd069a57 100644 --- a/pkg/storage/fs/s3ng/s3ng.go +++ b/pkg/storage/fs/s3ng/s3ng.go @@ -19,6 +19,7 @@ package s3ng import ( + "context" "fmt" "github.com/cs3org/reva/pkg/storage" @@ -33,7 +34,7 @@ func init() { // New returns an implementation to of the storage.FS interface that talk to // a local filesystem. -func New(m map[string]interface{}) (storage.FS, error) { +func New(ctx context.Context, m map[string]interface{}) (storage.FS, error) { o, err := parseConfig(m) if err != nil { return nil, err diff --git a/pkg/storage/fs/s3ng/s3ng_test.go b/pkg/storage/fs/s3ng/s3ng_test.go index 697006f8bb2..b934accb61e 100644 --- a/pkg/storage/fs/s3ng/s3ng_test.go +++ b/pkg/storage/fs/s3ng/s3ng_test.go @@ -19,6 +19,7 @@ package s3ng_test import ( + "context" "os" "github.com/cs3org/reva/pkg/storage/fs/s3ng" @@ -58,12 +59,12 @@ var _ = Describe("S3ng", func() { Describe("New", func() { It("fails on missing s3 configuration", func() { - _, err := s3ng.New(map[string]interface{}{}) + _, err := s3ng.New(context.Background(), map[string]interface{}{}) Expect(err).To(MatchError("S3 configuration incomplete")) }) It("works with complete configuration", func() { - _, err := s3ng.New(options) + _, err := s3ng.New(context.Background(), options) Expect(err).ToNot(HaveOccurred()) }) }) diff --git a/pkg/storage/registry/registry/registry.go b/pkg/storage/registry/registry/registry.go index 4ee886751bf..7b6460d1a5e 100644 --- a/pkg/storage/registry/registry/registry.go +++ b/pkg/storage/registry/registry/registry.go @@ -18,11 +18,15 @@ package registry -import "github.com/cs3org/reva/pkg/storage" +import ( + "context" + + "github.com/cs3org/reva/pkg/storage" +) // NewFunc is the function that storage broker implementations // should register at init time. -type NewFunc func(map[string]interface{}) (storage.Registry, error) +type NewFunc func(context.Context, map[string]interface{}) (storage.Registry, error) // NewFuncs is a map containing all the registered storage backends. var NewFuncs = map[string]NewFunc{} diff --git a/pkg/storage/registry/static/static.go b/pkg/storage/registry/static/static.go index fc0d2f99c73..25c526df3bf 100644 --- a/pkg/storage/registry/static/static.go +++ b/pkg/storage/registry/static/static.go @@ -80,7 +80,7 @@ func parseConfig(m map[string]interface{}) (*config, error) { // New returns an implementation of the storage.Registry interface that // redirects requests to corresponding storage drivers. -func New(m map[string]interface{}) (storage.Registry, error) { +func New(ctx context.Context, m map[string]interface{}) (storage.Registry, error) { c, err := parseConfig(m) if err != nil { return nil, err diff --git a/pkg/storage/registry/static/static_test.go b/pkg/storage/registry/static/static_test.go index d5331dadf97..333604a36a0 100644 --- a/pkg/storage/registry/static/static_test.go +++ b/pkg/storage/registry/static/static_test.go @@ -35,7 +35,7 @@ var _ = Describe("Static", func() { totalProviders, rootProviders, eosProviders := 33, 31, 29 - handler, err := static.New(map[string]interface{}{ + handler, err := static.New(context.Background(), map[string]interface{}{ "home_provider": "/home", "rules": map[string]interface{}{ "/home": map[string]interface{}{ diff --git a/pkg/storage/utils/decomposedfs/testhelpers/helpers.go b/pkg/storage/utils/decomposedfs/testhelpers/helpers.go index 41ad8ac098e..2128a75f05a 100644 --- a/pkg/storage/utils/decomposedfs/testhelpers/helpers.go +++ b/pkg/storage/utils/decomposedfs/testhelpers/helpers.go @@ -56,9 +56,9 @@ type TestEnv struct { // NewTestEnv prepares a test environment on disk // The storage contains some directories and a file: // -// /dir1/ -// /dir1/file1 -// /dir1/subdir1/ +// /dir1/ +// /dir1/file1 +// /dir1/subdir1/ func NewTestEnv() (*TestEnv, error) { tmpRoot, err := helpers.TempDir("reva-unit-tests-*-root") if err != nil { diff --git a/pkg/storage/utils/eosfs/eosfs.go b/pkg/storage/utils/eosfs/eosfs.go index e66e6a7b363..228ac6758e0 100644 --- a/pkg/storage/utils/eosfs/eosfs.go +++ b/pkg/storage/utils/eosfs/eosfs.go @@ -162,7 +162,7 @@ type eosfs struct { } // NewEOSFS returns a storage.FS interface implementation that connects to an EOS instance -func NewEOSFS(c *Config) (storage.FS, error) { +func NewEOSFS(ctx context.Context, c *Config) (storage.FS, error) { c.init() // bail out if keytab is not found. @@ -200,7 +200,7 @@ func NewEOSFS(c *Config) (storage.FS, error) { ClientCADirs: c.ClientCADirs, ClientCAFiles: c.ClientCAFiles, } - eosClient, err = eosgrpc.New(eosClientOpts, eosHTTPOpts) + eosClient, err = eosgrpc.New(ctx, eosClientOpts, eosHTTPOpts) } else { eosClientOpts := &eosbinary.Options{ XrdcopyBinary: c.XrdcopyBinary, @@ -215,7 +215,7 @@ func NewEOSFS(c *Config) (storage.FS, error) { VersionInvariant: c.VersionInvariant, TokenExpiry: c.TokenExpiry, } - eosClient, err = eosbinary.New(eosClientOpts) + eosClient, err = eosbinary.New(ctx, eosClientOpts) } if err != nil { diff --git a/pkg/user/manager/demo/demo.go b/pkg/user/manager/demo/demo.go index f8ccc83e025..1e66b97c80f 100644 --- a/pkg/user/manager/demo/demo.go +++ b/pkg/user/manager/demo/demo.go @@ -39,7 +39,7 @@ type manager struct { } // New returns a new user manager. -func New(m map[string]interface{}) (user.Manager, error) { +func New(ctx context.Context, m map[string]interface{}) (user.Manager, error) { mgr := &manager{} err := mgr.Configure(m) if err != nil { diff --git a/pkg/user/manager/demo/demo_test.go b/pkg/user/manager/demo/demo_test.go index 07c3ce9369c..9ace4f4882f 100644 --- a/pkg/user/manager/demo/demo_test.go +++ b/pkg/user/manager/demo/demo_test.go @@ -31,7 +31,7 @@ var ctx = context.Background() func TestUserManager(t *testing.T) { // get manager - manager, _ := New(nil) + manager, _ := New(ctx, nil) // setup test data uidEinstein := &userpb.UserId{Idp: "http://localhost:9998", OpaqueId: "4c510ada-c86b-4815-8820-42cdf82c3d51", Type: userpb.UserType_USER_TYPE_PRIMARY} diff --git a/pkg/user/manager/json/json.go b/pkg/user/manager/json/json.go index 5a47d16c647..2066de8c36c 100644 --- a/pkg/user/manager/json/json.go +++ b/pkg/user/manager/json/json.go @@ -64,7 +64,7 @@ func parseConfig(m map[string]interface{}) (*config, error) { } // New returns a user manager implementation that reads a json file to provide user metadata. -func New(m map[string]interface{}) (user.Manager, error) { +func New(ctx context.Context, m map[string]interface{}) (user.Manager, error) { mgr := &manager{} err := mgr.Configure(m) if err != nil { diff --git a/pkg/user/manager/json/json_test.go b/pkg/user/manager/json/json_test.go index f591d94a69d..443069d6180 100644 --- a/pkg/user/manager/json/json_test.go +++ b/pkg/user/manager/json/json_test.go @@ -58,7 +58,7 @@ func TestUserManager(t *testing.T) { input := map[string]interface{}{ "users": file.Name(), } - _, err = New(input) + _, err = New(ctx, input) if err == nil { t.Fatalf("no error (but we expected one) while get manager") } @@ -86,7 +86,7 @@ func TestUserManager(t *testing.T) { input = map[string]interface{}{ "users": file.Name(), } - manager, _ := New(input) + manager, _ := New(ctx, input) // setup test data uidEinstein := &userpb.UserId{Idp: "localhost", OpaqueId: "einstein", Type: userpb.UserType_USER_TYPE_PRIMARY} diff --git a/pkg/user/manager/ldap/ldap.go b/pkg/user/manager/ldap/ldap.go index 402240996db..647361312ff 100644 --- a/pkg/user/manager/ldap/ldap.go +++ b/pkg/user/manager/ldap/ldap.go @@ -101,7 +101,7 @@ func parseConfig(m map[string]interface{}) (*config, error) { } // New returns a user manager implementation that connects to a LDAP server to provide user metadata. -func New(m map[string]interface{}) (user.Manager, error) { +func New(ctx context.Context, m map[string]interface{}) (user.Manager, error) { mgr := &manager{} err := mgr.Configure(m) if err != nil { diff --git a/pkg/user/manager/ldap/ldap_test.go b/pkg/user/manager/ldap/ldap_test.go index 4d6a1235689..9dd66ff9221 100644 --- a/pkg/user/manager/ldap/ldap_test.go +++ b/pkg/user/manager/ldap/ldap_test.go @@ -19,12 +19,13 @@ package ldap import ( + "context" "testing" ) func TestUserManager(t *testing.T) { // negative test for parseConfig - _, err := New(map[string]interface{}{"hostname": 42}) + _, err := New(context.Background(), map[string]interface{}{"hostname": 42}) if err == nil { t.Fatal("expected error but got none") } @@ -64,7 +65,7 @@ func TestUserManager(t *testing.T) { } // positive tests for New - _, err = New(map[string]interface{}{}) + _, err = New(context.Background(), map[string]interface{}{}) if err != nil { t.Fatalf(err.Error()) } diff --git a/pkg/user/manager/nextcloud/nextcloud.go b/pkg/user/manager/nextcloud/nextcloud.go index f425fc3300a..1b5b644f719 100644 --- a/pkg/user/manager/nextcloud/nextcloud.go +++ b/pkg/user/manager/nextcloud/nextcloud.go @@ -80,7 +80,7 @@ type Action struct { } // New returns a user manager implementation that reads a json file to provide user metadata. -func New(m map[string]interface{}) (user.Manager, error) { +func New(ctx context.Context, m map[string]interface{}) (user.Manager, error) { c, err := parseConfig(m) if err != nil { return nil, err diff --git a/pkg/user/manager/nextcloud/nextcloud_test.go b/pkg/user/manager/nextcloud/nextcloud_test.go index ca875fb757d..6c14cb9555a 100644 --- a/pkg/user/manager/nextcloud/nextcloud_test.go +++ b/pkg/user/manager/nextcloud/nextcloud_test.go @@ -116,7 +116,7 @@ var _ = Describe("Nextcloud", func() { Describe("New", func() { It("returns a new instance", func() { - _, err := nextcloud.New(options) + _, err := nextcloud.New(ctx, options) Expect(err).ToNot(HaveOccurred()) }) }) diff --git a/pkg/user/manager/owncloudsql/owncloudsql.go b/pkg/user/manager/owncloudsql/owncloudsql.go index e56bc7cf0ff..ad2b6f7761b 100644 --- a/pkg/user/manager/owncloudsql/owncloudsql.go +++ b/pkg/user/manager/owncloudsql/owncloudsql.go @@ -59,7 +59,7 @@ type config struct { } // NewMysql returns a new user manager connection to an owncloud mysql database -func NewMysql(m map[string]interface{}) (user.Manager, error) { +func NewMysql(ctx context.Context, m map[string]interface{}) (user.Manager, error) { mgr := &manager{} err := mgr.Configure(m) if err != nil { diff --git a/pkg/user/manager/registry/registry.go b/pkg/user/manager/registry/registry.go index 17584350bdb..de19d0f9567 100644 --- a/pkg/user/manager/registry/registry.go +++ b/pkg/user/manager/registry/registry.go @@ -19,12 +19,14 @@ package registry import ( + "context" + "github.com/cs3org/reva/pkg/user" ) // NewFunc is the function that user managers // should register at init time. -type NewFunc func(map[string]interface{}) (user.Manager, error) +type NewFunc func(context.Context, map[string]interface{}) (user.Manager, error) // NewFuncs is a map containing all the registered user managers. var NewFuncs = map[string]NewFunc{} diff --git a/tests/integration/grpc/storageprovider_test.go b/tests/integration/grpc/storageprovider_test.go index 56553698301..96ded1ce9e3 100644 --- a/tests/integration/grpc/storageprovider_test.go +++ b/tests/integration/grpc/storageprovider_test.go @@ -500,7 +500,7 @@ var _ = Describe("storage providers", func() { Context("with an existing file /versioned_file", func() { JustBeforeEach(func() { - fs, err := ocis.New(map[string]interface{}{ + fs, err := ocis.New(context.Background(), map[string]interface{}{ "root": revads["storage"].TmpRoot, "enable_home": true, }) @@ -558,7 +558,7 @@ var _ = Describe("storage providers", func() { Context("with an existing file /versioned_file", func() { JustBeforeEach(func() { - fs, err := ocis.New(map[string]interface{}{ + fs, err := ocis.New(context.Background(), map[string]interface{}{ "root": revads["storage"].TmpRoot, "enable_home": true, }) @@ -625,7 +625,7 @@ var _ = Describe("storage providers", func() { Context("with an existing file /versioned_file", func() { JustBeforeEach(func() { - fs, err := owncloud.New(map[string]interface{}{ + fs, err := owncloud.New(context.Background(), map[string]interface{}{ "datadirectory": revads["storage"].TmpRoot, "userprovidersvc": revads["users"].GrpcAddress, "enable_home": true,