diff --git a/graph/pkg/command/root.go b/graph/pkg/command/root.go index a41e800304..4e07ad4b88 100644 --- a/graph/pkg/command/root.go +++ b/graph/pkg/command/root.go @@ -78,8 +78,8 @@ type SutureService struct { // NewSutureService creates a new graph.SutureService func NewSutureService(cfg *ociscfg.Config) suture.Service { - if (cfg.Accounts.Log == shared.Log{}) { - cfg.Accounts.Log = cfg.Log + if (cfg.Graph.Log == shared.Log{}) { + cfg.Graph.Log = cfg.Log } return SutureService{ cfg: cfg.Graph, diff --git a/idp/pkg/command/root.go b/idp/pkg/command/root.go index e4cff0b260..c62f9e7912 100644 --- a/idp/pkg/command/root.go +++ b/idp/pkg/command/root.go @@ -84,8 +84,8 @@ type SutureService struct { // NewSutureService creates a new idp.SutureService func NewSutureService(cfg *ociscfg.Config) suture.Service { - if (cfg.Accounts.Log == shared.Log{}) { - cfg.Accounts.Log = cfg.Log + if (cfg.IDP.Log == shared.Log{}) { + cfg.IDP.Log = cfg.Log } return SutureService{ cfg: cfg.IDP, diff --git a/ocis/pkg/command/ocs.go b/ocis/pkg/command/ocs.go index 9a08c49d98..8c3b11baca 100644 --- a/ocis/pkg/command/ocs.go +++ b/ocis/pkg/command/ocs.go @@ -5,52 +5,44 @@ package command import ( "github.com/owncloud/ocis/ocis-pkg/config" - "github.com/owncloud/ocis/ocis-pkg/version" + "github.com/owncloud/ocis/ocis-pkg/shared" "github.com/owncloud/ocis/ocis/pkg/register" "github.com/owncloud/ocis/ocs/pkg/command" - svcconfig "github.com/owncloud/ocis/ocs/pkg/config" "github.com/urfave/cli/v2" ) // OCSCommand is the entrypoint for the ocs command. func OCSCommand(cfg *config.Config) *cli.Command { + var globalLog shared.Log + return &cli.Command{ Name: "ocs", Usage: "Start ocs server", Category: "Extensions", + Before: func(ctx *cli.Context) error { + if err := ParseConfig(ctx, cfg); err != nil { + return err + } + + globalLog = cfg.Log + + return nil + }, + Action: func(c *cli.Context) error { + // if accounts logging is empty in ocis.yaml + if (cfg.OCS.Log == shared.Log{}) && (globalLog != shared.Log{}) { + // we can safely inherit the global logging values. + cfg.OCS.Log = globalLog + } + origCmd := command.Server(cfg.OCS) + return handleOriginalAction(c, origCmd) + }, Subcommands: []*cli.Command{ command.PrintVersion(cfg.OCS), }, - Before: func(ctx *cli.Context) error { - return ParseConfig(ctx, cfg) - }, - Action: func(c *cli.Context) error { - origCmd := command.Server(configureOCS(cfg)) - return handleOriginalAction(c, origCmd) - }, } } -func configureOCS(cfg *config.Config) *svcconfig.Config { - cfg.OCS.Log.Level = cfg.Log.Level - cfg.OCS.Log.Pretty = cfg.Log.Pretty - cfg.OCS.Log.Color = cfg.Log.Color - cfg.OCS.Service.Version = version.String - - if cfg.Tracing.Enabled { - cfg.OCS.Tracing.Enabled = cfg.Tracing.Enabled - cfg.OCS.Tracing.Type = cfg.Tracing.Type - cfg.OCS.Tracing.Endpoint = cfg.Tracing.Endpoint - cfg.OCS.Tracing.Collector = cfg.Tracing.Collector - } - - if cfg.TokenManager.JWTSecret != "" { - cfg.OCS.TokenManager.JWTSecret = cfg.TokenManager.JWTSecret - } - - return cfg.OCS -} - func init() { register.AddCommand(OCSCommand) } diff --git a/ocs/pkg/command/root.go b/ocs/pkg/command/root.go index 5393527b42..4f939fc1b5 100644 --- a/ocs/pkg/command/root.go +++ b/ocs/pkg/command/root.go @@ -4,6 +4,8 @@ import ( "context" "os" + "github.com/owncloud/ocis/ocis-pkg/shared" + ociscfg "github.com/owncloud/ocis/ocis-pkg/config" "github.com/owncloud/ocis/ocis-pkg/log" "github.com/owncloud/ocis/ocis-pkg/version" @@ -84,7 +86,9 @@ type SutureService struct { // NewSutureService creates a new ocs.SutureService func NewSutureService(cfg *ociscfg.Config) suture.Service { - cfg.OCS.Log = cfg.Log + if (cfg.OCS.Log == shared.Log{}) { + cfg.OCS.Log = cfg.Log + } return SutureService{ cfg: cfg.OCS, } diff --git a/ocs/pkg/command/server.go b/ocs/pkg/command/server.go index 7b3ff62523..dc4e6a4cb2 100644 --- a/ocs/pkg/command/server.go +++ b/ocs/pkg/command/server.go @@ -4,6 +4,10 @@ import ( "context" "strings" + gofig "github.com/gookit/config/v2" + ociscfg "github.com/owncloud/ocis/ocis-pkg/config" + "github.com/owncloud/ocis/ocis-pkg/shared" + "github.com/owncloud/ocis/ocs/pkg/tracing" "github.com/owncloud/ocis/ocis-pkg/sync" @@ -22,11 +26,30 @@ func Server(cfg *config.Config) *cli.Command { Name: "server", Usage: "Start integrated server", Before: func(ctx *cli.Context) error { + // remember shared logging info to prevent empty overwrites + inLog := cfg.Log if cfg.HTTP.Root != "/" { cfg.HTTP.Root = strings.TrimSuffix(cfg.HTTP.Root, "/") } - return ParseConfig(ctx, cfg) + if err := ParseConfig(ctx, cfg); err != nil { + return err + } + + if (cfg.Log == shared.Log{}) && (inLog != shared.Log{}) { + // set the default to the parent config + cfg.Log = inLog + + // and parse the environment + conf := &gofig.Config{} + conf.LoadOSEnv(config.GetEnv(), false) + bindings := config.StructMappings(cfg) + if err := ociscfg.BindEnv(conf, bindings); err != nil { + return err + } + } + + return nil }, Action: func(c *cli.Context) error { logger := NewLogger(cfg)