From accfef06702b94632b8a5d5dcab021cff3f979e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8A=A0=E8=8F=B2?= Date: Thu, 27 May 2021 16:53:34 +0800 Subject: [PATCH] Feature/base options (#269) * refactor: wrapper jaeger with telemetry Signed-off-by: zuozheng.hzz * fix: viper parse common flags Signed-off-by: zuozheng.hzz --- client/config/peerhost.go | 1 - cmd/cdn/cmd/root.go | 2 +- cmd/dependency/base/option.go | 13 +++++++++---- cmd/dependency/dependency.go | 36 +++++++++++++++++------------------ cmd/dfget/cmd/daemon.go | 2 +- cmd/dfget/cmd/root.go | 2 +- cmd/manager/cmd/root.go | 2 +- cmd/scheduler/cmd/root.go | 2 +- 8 files changed, 32 insertions(+), 28 deletions(-) diff --git a/client/config/peerhost.go b/client/config/peerhost.go index 7134ebf5da9..7f3718e0cc2 100644 --- a/client/config/peerhost.go +++ b/client/config/peerhost.go @@ -60,7 +60,6 @@ type PeerHostOption struct { Proxy *ProxyOption `mapstructure:"proxy" yaml:"proxy"` Upload UploadOption `mapstructure:"upload" yaml:"upload"` Storage StorageOption `mapstructure:"storage" yaml:"storage"` - Telemetry TelemetryOption `mapstructure:"telemetry" yaml:"telemetry"` ConfigServer string `mapstructure:"configServer" yaml:"configServer"` } diff --git a/cmd/cdn/cmd/root.go b/cmd/cdn/cmd/root.go index a0ee8232efd..8f3ee4aaf37 100644 --- a/cmd/cdn/cmd/root.go +++ b/cmd/cdn/cmd/root.go @@ -73,7 +73,7 @@ func runCdnSystem() error { s, _ := yaml.Marshal(cfg) logger.Infof("cdn system configuration:\n%s", string(s)) - ff := dependency.InitMonitor(cfg.Verbose, cfg.PProfPort, cfg.Jaeger) + ff := dependency.InitMonitor(cfg.Verbose, cfg.PProfPort, cfg.Telemetry.Jaeger) defer ff() svr, err := server.New(cfg) diff --git a/cmd/dependency/base/option.go b/cmd/dependency/base/option.go index f3465f6c0e8..d4f90f2c627 100644 --- a/cmd/dependency/base/option.go +++ b/cmd/dependency/base/option.go @@ -17,8 +17,13 @@ package base type Options struct { - Console bool `yaml:"console" mapstructure:"console"` - Verbose bool `yaml:"verbose" mapstructure:"verbose"` - PProfPort int `yaml:"pprof-port" mapstructure:"pprof-port"` - Jaeger string `yaml:"jaeger" mapstructure:"jaeger"` + Console bool `yaml:"console" mapstructure:"console"` + Verbose bool `yaml:"verbose" mapstructure:"verbose"` + PProfPort int `yaml:"pprof-port" mapstructure:"pprof-port"` + Telemetry TelemetryOption `yaml:",inline" mapstructure:",squash"` +} + +// TelemetryOption is the option for telemetry +type TelemetryOption struct { + Jaeger string `yaml:"jaeger" mapstructure:"jaeger"` } diff --git a/cmd/dependency/dependency.go b/cmd/dependency/dependency.go index f894f1f3934..0fdf4e75124 100644 --- a/cmd/dependency/dependency.go +++ b/cmd/dependency/dependency.go @@ -58,26 +58,26 @@ func InitCobra(cmd *cobra.Command, useConfigFile bool, config interface{}) { rootName := cmd.Root().Name() cobra.OnInitialize(func() { initConfig(useConfigFile, rootName, config) }) - // Add common flags - flags := cmd.Flags() - flags.Bool("console", false, "whether logger output records to the stdout") - flags.Bool("verbose", false, "whether logger use debug level") - flags.Int("pprof-port", -1, "listen port for pprof, 0 represents random port") - flags.String("jaeger", "", "jaeger endpoint url, like: http://localhost:14250/api/traces") - flags.String("config", "", fmt.Sprintf("the path of configuration file with yaml extension name, default is %s, it can also be set by env var:%s", filepath.Join(dfpath.DefaultConfigDir, rootName+".yaml"), strings.ToUpper(rootName+"_config"))) - - // Bind common flags - if err := viper.BindPFlags(flags); err != nil { - panic(errors.Wrap(err, "bind common flags to viper")) - } + if !cmd.HasParent() { + // Add common flags + flags := cmd.PersistentFlags() + flags.Bool("console", false, "whether logger output records to the stdout") + flags.Bool("verbose", false, "whether logger use debug level") + flags.Int("pprof-port", -1, "listen port for pprof, 0 represents random port") + flags.String("jaeger", "", "jaeger endpoint url, like: http://localhost:14250/api/traces") + flags.String("config", "", fmt.Sprintf("the path of configuration file with yaml extension name, default is %s, it can also be set by env var:%s", filepath.Join(dfpath.DefaultConfigDir, rootName+".yaml"), strings.ToUpper(rootName+"_config"))) + + // Bind common flags + if err := viper.BindPFlags(flags); err != nil { + panic(errors.Wrap(err, "bind common flags to viper")) + } - // Config for binding env - viper.SetEnvPrefix(rootName) - viper.SetEnvKeyReplacer(strings.NewReplacer(".", "_")) - _ = viper.BindEnv("config") + // Config for binding env + viper.SetEnvPrefix(rootName) + viper.SetEnvKeyReplacer(strings.NewReplacer(".", "_")) + _ = viper.BindEnv("config") - // Add common cmds only on root cmd - if !cmd.HasParent() { + // Add common cmds only on root cmd cmd.AddCommand(VersionCmd) cmd.AddCommand(newDocCommand(cmd.Name())) } diff --git a/cmd/dfget/cmd/daemon.go b/cmd/dfget/cmd/daemon.go index 3f062f147b8..f5b4e95db8c 100644 --- a/cmd/dfget/cmd/daemon.go +++ b/cmd/dfget/cmd/daemon.go @@ -133,7 +133,7 @@ func runDaemon() error { s, _ := yaml.Marshal(cfg) logger.Infof("client daemon configuration:\n%s", string(s)) - ff := dependency.InitMonitor(cfg.Verbose, cfg.PProfPort, cfg.Jaeger) + ff := dependency.InitMonitor(cfg.Verbose, cfg.PProfPort, cfg.Telemetry.Jaeger) defer ff() svr, err := server.New(cfg) diff --git a/cmd/dfget/cmd/root.go b/cmd/dfget/cmd/root.go index 1d398c17962..c44665e7784 100644 --- a/cmd/dfget/cmd/root.go +++ b/cmd/dfget/cmd/root.go @@ -153,7 +153,7 @@ func runDfget() error { s, _ := yaml.Marshal(dfgetConfig) logger.Infof("client dfget configuration:\n%s", string(s)) - ff := dependency.InitMonitor(dfgetConfig.Verbose, dfgetConfig.PProfPort, dfgetConfig.Jaeger) + ff := dependency.InitMonitor(dfgetConfig.Verbose, dfgetConfig.PProfPort, dfgetConfig.Telemetry.Jaeger) defer ff() logger.Info("start to check and spawn daemon") diff --git a/cmd/manager/cmd/root.go b/cmd/manager/cmd/root.go index 0c5ecd13276..de6fd96e4d8 100644 --- a/cmd/manager/cmd/root.go +++ b/cmd/manager/cmd/root.go @@ -72,7 +72,7 @@ func runManager() error { s, _ := yaml.Marshal(cfg) logger.Infof("manager configuration:\n%s", string(s)) - ff := dependency.InitMonitor(cfg.Verbose, cfg.PProfPort, cfg.Jaeger) + ff := dependency.InitMonitor(cfg.Verbose, cfg.PProfPort, cfg.Telemetry.Jaeger) defer ff() svr, err := server.New(cfg) diff --git a/cmd/scheduler/cmd/root.go b/cmd/scheduler/cmd/root.go index 82c00ae2a68..ad78022b189 100644 --- a/cmd/scheduler/cmd/root.go +++ b/cmd/scheduler/cmd/root.go @@ -78,7 +78,7 @@ func runScheduler() error { s, _ := yaml.Marshal(cfg) logger.Infof("scheduler configuration:\n%s", string(s)) - ff := dependency.InitMonitor(cfg.Verbose, cfg.PProfPort, cfg.Jaeger) + ff := dependency.InitMonitor(cfg.Verbose, cfg.PProfPort, cfg.Telemetry.Jaeger) defer ff() svr, err := server.New(cfg)