From bff4ec48b0eedd87297170a5f6efcab1b514bae7 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Mon, 8 Nov 2021 13:41:59 +0100 Subject: [PATCH] new config framework in accounts --- accounts/pkg/command/root.go | 6 +++++- accounts/pkg/command/server.go | 19 +++++++++++++++++++ ocis/pkg/command/accounts.go | 17 +++++++++++++++-- ocis/pkg/command/proxy.go | 4 ++-- 4 files changed, 41 insertions(+), 5 deletions(-) diff --git a/accounts/pkg/command/root.go b/accounts/pkg/command/root.go index 153a01545..5b380faea 100644 --- a/accounts/pkg/command/root.go +++ b/accounts/pkg/command/root.go @@ -4,6 +4,8 @@ import ( "context" "os" + "github.com/owncloud/ocis/ocis-pkg/shared" + "github.com/owncloud/ocis/accounts/pkg/config" ociscfg "github.com/owncloud/ocis/ocis-pkg/config" "github.com/owncloud/ocis/ocis-pkg/log" @@ -87,7 +89,9 @@ type SutureService struct { // NewSutureService creates a new accounts.SutureService func NewSutureService(cfg *ociscfg.Config) suture.Service { - cfg.Accounts.Log = cfg.Log + if (cfg.Accounts.Log == shared.Log{}) { + cfg.Accounts.Log = cfg.Log + } return SutureService{ cfg: cfg.Accounts, } diff --git a/accounts/pkg/command/server.go b/accounts/pkg/command/server.go index 04f6410d2..360e9c7ac 100644 --- a/accounts/pkg/command/server.go +++ b/accounts/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/ocis-pkg/sync" "github.com/oklog/run" @@ -23,6 +27,8 @@ func Server(cfg *config.Config) *cli.Command { Usage: "Start ocis accounts service", Description: "uses an LDAP server as the storage backend", 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, "/") } @@ -33,6 +39,19 @@ func Server(cfg *config.Config) *cli.Command { 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 { diff --git a/ocis/pkg/command/accounts.go b/ocis/pkg/command/accounts.go index 12d16109d..b335b5496 100644 --- a/ocis/pkg/command/accounts.go +++ b/ocis/pkg/command/accounts.go @@ -6,12 +6,15 @@ package command import ( "github.com/owncloud/ocis/accounts/pkg/command" "github.com/owncloud/ocis/ocis-pkg/config" + "github.com/owncloud/ocis/ocis-pkg/shared" "github.com/owncloud/ocis/ocis/pkg/register" "github.com/urfave/cli/v2" ) // AccountsCommand is the entrypoint for the accounts command. func AccountsCommand(cfg *config.Config) *cli.Command { + var globalLog shared.Log + return &cli.Command{ Name: "accounts", Usage: "Start accounts server", @@ -25,10 +28,20 @@ func AccountsCommand(cfg *config.Config) *cli.Command { command.PrintVersion(cfg.Accounts), }, Before: func(ctx *cli.Context) error { - return ParseConfig(ctx, cfg) + if err := ParseConfig(ctx, cfg); err != nil { + return err + } + + globalLog = cfg.Log + + return nil }, Action: func(c *cli.Context) error { - cfg.Accounts.Log = cfg.Log + // if accounts logging is empty in ocis.yaml + if (cfg.Accounts.Log == shared.Log{}) && (globalLog != shared.Log{}) { + // we can safely inherit the global logging values. + cfg.Accounts.Log = globalLog + } origCmd := command.Server(cfg.Accounts) return handleOriginalAction(c, origCmd) }, diff --git a/ocis/pkg/command/proxy.go b/ocis/pkg/command/proxy.go index 7ed1f6c19..f2cfe5e2b 100644 --- a/ocis/pkg/command/proxy.go +++ b/ocis/pkg/command/proxy.go @@ -11,10 +11,10 @@ import ( "github.com/urfave/cli/v2" ) -var globalLog shared.Log - // ProxyCommand is the entry point for the proxy command. func ProxyCommand(cfg *config.Config) *cli.Command { + var globalLog shared.Log + return &cli.Command{ Name: "proxy", Usage: "Start proxy server",