From 037b12022a0ca6e5bebec1d0c596b98691182f67 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Wed, 18 Mar 2020 13:10:46 +0100 Subject: [PATCH 01/11] update dependencies --- go.mod | 1 + go.sum | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/go.mod b/go.mod index 4ef53951ad6..b9e613211e1 100644 --- a/go.mod +++ b/go.mod @@ -12,4 +12,5 @@ require ( github.com/owncloud/ocis-pkg v1.3.0 github.com/owncloud/ocis-pkg/v2 v2.0.1 github.com/restic/calens v0.2.0 + github.com/spf13/viper v1.6.1 ) diff --git a/go.sum b/go.sum index 34e92d15959..7da42e51c3c 100644 --- a/go.sum +++ b/go.sum @@ -321,6 +321,7 @@ github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d/go.mod h1:sJBsC github.com/googleapis/gnostic v0.3.1/go.mod h1:on+2t9HRStVgn95RSsFWFz+6Q0Snyqv1awfrALZdbtU= github.com/gophercloud/gophercloud v0.3.0/go.mod h1:vxM41WHh5uqHVBMZHzuwNOHh8XEoIEcSTewFxm1c5g8= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gopherjs/gopherjs v0.0.0-20181103185306-d547d1d9531e h1:JKmoR8x90Iww1ks85zJ1lfDGgIiMDuIptTOhJq+zKyg= github.com/gopherjs/gopherjs v0.0.0-20181103185306-d547d1d9531e/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= github.com/gorilla/handlers v1.4.2/go.mod h1:Qkdc/uu4tH4g6mTK6auzZ766c4CA0Ng8+o/OAirnOIQ= @@ -412,6 +413,7 @@ github.com/json-iterator/go v1.1.9 h1:9yzud/Ht36ygwatGx56VwCZtlI/2AD15T1X2sjSuGn github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jtolds/gls v4.2.1+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= +github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/juju/ratelimit v1.0.1/go.mod h1:qapgC/Gy+xNh9UxzV13HGGl/6UXNN+ct+vwSgWNm/qk= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= @@ -680,10 +682,12 @@ github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMB github.com/sirupsen/logrus v1.4.2 h1:SPIRibHv4MatM3XXNO2BJeFLZwZ2LvZgfQ5+UNI2im4= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/skratchdot/open-golang v0.0.0-20160302144031-75fb7ed4208c/go.mod h1:sUM3LWHvSMaG192sy56D9F7CNvL7jUJVXoqM1QKLnog= +github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/go-aws-auth v0.0.0-20180515143844-0c1422d1fdb9/go.mod h1:SnhjPscd9TpLiy1LpzGSKh3bXCfxxXuqd9xmQJy3slM= github.com/smartystreets/goconvey v0.0.0-20181108003508-044398e4856c/go.mod h1:XDJAKZRPZ1CvBcN2aX5YOUTYGHki24fSF0Iv48Ibg0s= github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= +github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/soheilhy/cmux v0.1.4 h1:0HKaf1o97UwFjHH9o5XsHUOF+tqmdA7KEzXLpiyaw0E= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= From df05ea082aab0dd91515ee876358d327cd38a965 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Wed, 18 Mar 2020 13:11:04 +0100 Subject: [PATCH 02/11] move viper config parsing to its scope --- pkg/command/root.go | 57 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/pkg/command/root.go b/pkg/command/root.go index 66369097c8a..2f01eb2887e 100644 --- a/pkg/command/root.go +++ b/pkg/command/root.go @@ -2,10 +2,13 @@ package command import ( "os" + "strings" "github.com/micro/cli/v2" "github.com/owncloud/ocis-accounts/pkg/config" "github.com/owncloud/ocis-hello/pkg/version" + "github.com/owncloud/ocis-pkg/log" + "github.com/spf13/viper" // init store manager _ "github.com/owncloud/ocis-accounts/pkg/store" @@ -42,3 +45,57 @@ func Execute() error { return app.Run(os.Args) } + +// NewLogger initializes a service-specific logger instance. +func NewLogger(cfg *config.Config) log.Logger { + return log.NewLogger( + log.Name("phoenix"), + log.Level("info"), + log.Pretty(true), + log.Color(true), + ) +} + +// ParseConfig loads proxy configuration from Viper known paths. +func ParseConfig(c *cli.Context, cfg *config.Config) error { + // ParseConfig loads proxy configuration from Viper known paths. + logger := NewLogger(cfg) + + viper.SetEnvKeyReplacer(strings.NewReplacer(".", "_")) + viper.SetEnvPrefix("OCIS_ACCOUNTS") + viper.AutomaticEnv() + + if c.IsSet("config-file") { + viper.SetConfigFile(c.String("config-file")) + } else { + viper.SetConfigName("accounts") + + viper.AddConfigPath("/etc/ocis") + viper.AddConfigPath("$HOME/.ocis") + viper.AddConfigPath("./config") + } + + if err := viper.ReadInConfig(); err != nil { + switch err.(type) { + case viper.ConfigFileNotFoundError: + logger.Info(). + Msg("Continue without config") + case viper.UnsupportedConfigError: + logger.Fatal(). + Err(err). + Msg("Unsupported config type") + default: + logger.Fatal(). + Err(err). + Msg("Failed to read config") + } + } + + if err := viper.Unmarshal(&cfg); err != nil { + logger.Fatal(). + Err(err). + Msg("Failed to parse config") + } + + return nil +} From ef2e3dc962a62e2a4a9013da0b5e3a80b11eeb31 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Wed, 18 Mar 2020 13:11:17 +0100 Subject: [PATCH 03/11] parse configuration on before hook on server command --- pkg/command/server.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/command/server.go b/pkg/command/server.go index 9c1ea3ee427..fa81f5668b7 100644 --- a/pkg/command/server.go +++ b/pkg/command/server.go @@ -66,7 +66,7 @@ func Server(cfg *config.Config) *cli.Command { }, Before: func(c *cli.Context) error { logger = oclog.NewLogger(oclog.Name(cfg.Server.Name)) - return nil + return ParseConfig(c, cfg) }, Action: func(c *cli.Context) error { gr := run.Group{} From 85a29dc45606d3dfd2d2de83cb0ae2cb3e81fdf8 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Wed, 18 Mar 2020 13:15:19 +0100 Subject: [PATCH 04/11] changelog --- changelog/unreleased/self-config.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 changelog/unreleased/self-config.md diff --git a/changelog/unreleased/self-config.md b/changelog/unreleased/self-config.md new file mode 100644 index 00000000000..f6afe0dc5df --- /dev/null +++ b/changelog/unreleased/self-config.md @@ -0,0 +1,5 @@ +Enhancement: Configuration + +Extensions should be responsible of configuring themselves. We use Viper for config loading from default paths. Environment variables **WILL** take precedence over config files. + +https://github.com/owncloud/ocis-phoenix/pull/57 From 9b18154e710b6c1a7389f5c006f407e62fdf3ffb Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Wed, 18 Mar 2020 13:16:27 +0100 Subject: [PATCH 05/11] fix PR link --- changelog/unreleased/self-config.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/changelog/unreleased/self-config.md b/changelog/unreleased/self-config.md index f6afe0dc5df..f3b7ccdc9fe 100644 --- a/changelog/unreleased/self-config.md +++ b/changelog/unreleased/self-config.md @@ -2,4 +2,4 @@ Enhancement: Configuration Extensions should be responsible of configuring themselves. We use Viper for config loading from default paths. Environment variables **WILL** take precedence over config files. -https://github.com/owncloud/ocis-phoenix/pull/57 +https://github.com/owncloud/ocis-accounts/pull/15 From d5fb7dd1eab5d392813c6aa19be82c54209ccdbf Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Wed, 18 Mar 2020 13:57:30 +0100 Subject: [PATCH 06/11] use ocis-pkg/v2 --- pkg/command/root.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/command/root.go b/pkg/command/root.go index 2f01eb2887e..470914673ff 100644 --- a/pkg/command/root.go +++ b/pkg/command/root.go @@ -7,7 +7,7 @@ import ( "github.com/micro/cli/v2" "github.com/owncloud/ocis-accounts/pkg/config" "github.com/owncloud/ocis-hello/pkg/version" - "github.com/owncloud/ocis-pkg/log" + "github.com/owncloud/ocis-pkg/v2/log" "github.com/spf13/viper" // init store manager From 5a36879b5b4187c3292e90b77ba46f9aaee9084b Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Wed, 18 Mar 2020 13:58:24 +0100 Subject: [PATCH 07/11] tidy deps: remove ocis-pkg@v1 --- go.mod | 1 - go.sum | 2 -- 2 files changed, 3 deletions(-) diff --git a/go.mod b/go.mod index b9e613211e1..3a0c7df3f16 100644 --- a/go.mod +++ b/go.mod @@ -9,7 +9,6 @@ require ( github.com/micro/go-micro/v2 v2.0.0 github.com/oklog/run v1.1.0 github.com/owncloud/ocis-hello v0.0.0-20200114105804-61741477dcec - github.com/owncloud/ocis-pkg v1.3.0 github.com/owncloud/ocis-pkg/v2 v2.0.1 github.com/restic/calens v0.2.0 github.com/spf13/viper v1.6.1 diff --git a/go.sum b/go.sum index 7da42e51c3c..7d1b8ada065 100644 --- a/go.sum +++ b/go.sum @@ -596,8 +596,6 @@ github.com/ovh/go-ovh v0.0.0-20181109152953-ba5adb4cf014/go.mod h1:joRatxRJaZBsY github.com/owncloud/ocis-hello v0.0.0-20200114105804-61741477dcec h1:gpILNWve7F8MIo/GBOM6bdszzZFfJEgcXPQBjDOMLAc= github.com/owncloud/ocis-hello v0.0.0-20200114105804-61741477dcec/go.mod h1:hrXqmloO2NHbdkDTPSNneobwzQgki8CUuQD8fqjkPv8= github.com/owncloud/ocis-pkg v1.2.1-0.20191217084055-eab942498596/go.mod h1:Wo0QfOmhadh2vNcUoQIsw2yaOT3zeftk+xaOOwP3y88= -github.com/owncloud/ocis-pkg v1.3.0 h1:2fkgvfd/spTjschuulYMHRuzxkCGGXae9ocebVYkm74= -github.com/owncloud/ocis-pkg v1.3.0/go.mod h1:Wo0QfOmhadh2vNcUoQIsw2yaOT3zeftk+xaOOwP3y88= github.com/owncloud/ocis-pkg/v2 v2.0.1 h1:3ISEtfjAz4pDFczTggIJwKuft3bVsAp1C7dFY9BBPEs= github.com/owncloud/ocis-pkg/v2 v2.0.1/go.mod h1:7bVnn3VUaqdmvpMkXF0QVEF1fRugs35hSkuVTAq9yjk= github.com/oxtoacart/bpool v0.0.0-20190530202638-03653db5a59c h1:rp5dCmg/yLR3mgFuSOe4oEnDDmGLROTvMragMUXpTQw= From d5b2dfc3ac92e3b0331ccd12744816c6e6151658 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Wed, 18 Mar 2020 14:15:11 +0100 Subject: [PATCH 08/11] leftover phoenix --- go.sum | 1 + pkg/command/root.go | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/go.sum b/go.sum index 7d1b8ada065..2d018cf6bed 100644 --- a/go.sum +++ b/go.sum @@ -595,6 +595,7 @@ github.com/oracle/oci-go-sdk v7.0.0+incompatible/go.mod h1:VQb79nF8Z2cwLkLS35ukw github.com/ovh/go-ovh v0.0.0-20181109152953-ba5adb4cf014/go.mod h1:joRatxRJaZBsY3JAOEMcoOp05CnZzsx4scTxi95DHyQ= github.com/owncloud/ocis-hello v0.0.0-20200114105804-61741477dcec h1:gpILNWve7F8MIo/GBOM6bdszzZFfJEgcXPQBjDOMLAc= github.com/owncloud/ocis-hello v0.0.0-20200114105804-61741477dcec/go.mod h1:hrXqmloO2NHbdkDTPSNneobwzQgki8CUuQD8fqjkPv8= +github.com/owncloud/ocis-pkg v1.2.1-0.20191217084055-eab942498596 h1:3aMNmuDCIdKsaa4YdVTQEBJMjGz8KiuIB/+xlJUCT3k= github.com/owncloud/ocis-pkg v1.2.1-0.20191217084055-eab942498596/go.mod h1:Wo0QfOmhadh2vNcUoQIsw2yaOT3zeftk+xaOOwP3y88= github.com/owncloud/ocis-pkg/v2 v2.0.1 h1:3ISEtfjAz4pDFczTggIJwKuft3bVsAp1C7dFY9BBPEs= github.com/owncloud/ocis-pkg/v2 v2.0.1/go.mod h1:7bVnn3VUaqdmvpMkXF0QVEF1fRugs35hSkuVTAq9yjk= diff --git a/pkg/command/root.go b/pkg/command/root.go index 470914673ff..b4de996fb96 100644 --- a/pkg/command/root.go +++ b/pkg/command/root.go @@ -49,7 +49,7 @@ func Execute() error { // NewLogger initializes a service-specific logger instance. func NewLogger(cfg *config.Config) log.Logger { return log.NewLogger( - log.Name("phoenix"), + log.Name("accounts"), log.Level("info"), log.Pretty(true), log.Color(true), From 5c91e7de68175a7eb7adc9718f09fc971835d5f1 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Wed, 18 Mar 2020 14:17:58 +0100 Subject: [PATCH 09/11] use ACCOUNTS as prefix instead of OCIS_ACCOUNTS --- pkg/command/root.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/command/root.go b/pkg/command/root.go index b4de996fb96..217cb67a4ef 100644 --- a/pkg/command/root.go +++ b/pkg/command/root.go @@ -62,7 +62,7 @@ func ParseConfig(c *cli.Context, cfg *config.Config) error { logger := NewLogger(cfg) viper.SetEnvKeyReplacer(strings.NewReplacer(".", "_")) - viper.SetEnvPrefix("OCIS_ACCOUNTS") + viper.SetEnvPrefix("ACCOUNTS") viper.AutomaticEnv() if c.IsSet("config-file") { From 274fa6693a22c9ed4d3216fe37db3066cfb70e14 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Wed, 18 Mar 2020 14:22:15 +0100 Subject: [PATCH 10/11] update env variables to match those of Viper --- pkg/command/server.go | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/pkg/command/server.go b/pkg/command/server.go index fa81f5668b7..0ce9fa874a7 100644 --- a/pkg/command/server.go +++ b/pkg/command/server.go @@ -28,13 +28,13 @@ func Server(cfg *config.Config) *cli.Command { DefaultText: "filesystem", Usage: "accounts backend manager", Value: "filesystem", - EnvVars: []string{"OCIS_ACCOUNTS_MANAGER"}, + EnvVars: []string{"ACCOUNTS_MANAGER"}, Destination: &cfg.Manager, }, &cli.StringFlag{ Name: "mount-path", Usage: "mounting point (necessary when manager=filesystem)", - EnvVars: []string{"OCIS_ACCOUNTS_MOUNT_PATH"}, + EnvVars: []string{"ACCOUNTS_MOUNT_PATH"}, Destination: &cfg.MountPath, }, &cli.StringFlag{ @@ -42,7 +42,7 @@ func Server(cfg *config.Config) *cli.Command { Value: "accounts", DefaultText: "accounts", Usage: "service name", - EnvVars: []string{"OCIS_ACCOUNTS_NAME"}, + EnvVars: []string{"ACCOUNTS_NAME"}, Destination: &cfg.Server.Name, }, &cli.StringFlag{ @@ -51,7 +51,7 @@ func Server(cfg *config.Config) *cli.Command { Value: "com.owncloud", DefaultText: "com.owncloud", Usage: "namespace", - EnvVars: []string{"OCIS_ACCOUNTS_NAMESPACE"}, + EnvVars: []string{"ACCOUNTS_NAMESPACE"}, Destination: &cfg.Server.Namespace, }, &cli.StringFlag{ @@ -60,7 +60,7 @@ func Server(cfg *config.Config) *cli.Command { Value: "localhost:9180", DefaultText: "localhost:9180", Usage: "service endpoint", - EnvVars: []string{"OCIS_ACCOUNTS_ADDRESS"}, + EnvVars: []string{"ACCOUNTS_ADDRESS"}, Destination: &cfg.Server.Address, }, }, From 58ed4a881ab064cc6818dbee3010b13ed0d15d06 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Wed, 18 Mar 2020 14:29:47 +0100 Subject: [PATCH 11/11] fix references --- pkg/command/root.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/command/root.go b/pkg/command/root.go index 217cb67a4ef..50ffd009c85 100644 --- a/pkg/command/root.go +++ b/pkg/command/root.go @@ -56,7 +56,7 @@ func NewLogger(cfg *config.Config) log.Logger { ) } -// ParseConfig loads proxy configuration from Viper known paths. +// ParseConfig loads accounts configuration from Viper known paths. func ParseConfig(c *cli.Context, cfg *config.Config) error { // ParseConfig loads proxy configuration from Viper known paths. logger := NewLogger(cfg)