Merge pull request #13638 from grafana/minor-setting-refactoring

minor setting refactorings
This commit is contained in:
Torkel Ödegaard
2018-10-12 08:58:21 +02:00
committed by GitHub
3 changed files with 37 additions and 31 deletions
+1 -1
View File
@@ -233,7 +233,7 @@ func (ss *SqlStore) buildConnectionString() (string, error) {
case migrator.SQLITE: case migrator.SQLITE:
// special case for tests // special case for tests
if !filepath.IsAbs(ss.dbCfg.Path) { if !filepath.IsAbs(ss.dbCfg.Path) {
ss.dbCfg.Path = filepath.Join(setting.DataPath, ss.dbCfg.Path) ss.dbCfg.Path = filepath.Join(ss.Cfg.DataPath, ss.dbCfg.Path)
} }
os.MkdirAll(path.Dir(ss.dbCfg.Path), os.ModePerm) os.MkdirAll(path.Dir(ss.dbCfg.Path), os.ModePerm)
cnnstr = "file:" + ss.dbCfg.Path + "?cache=shared&mode=rwc" cnnstr = "file:" + ss.dbCfg.Path + "?cache=shared&mode=rwc"
+24 -18
View File
@@ -54,14 +54,11 @@ var (
ApplicationName string ApplicationName string
// Paths // Paths
LogsPath string
HomePath string HomePath string
DataPath string
PluginsPath string PluginsPath string
CustomInitPath = "conf/custom.ini" CustomInitPath = "conf/custom.ini"
// Log settings. // Log settings.
LogModes []string
LogConfigs []util.DynMap LogConfigs []util.DynMap
// Http server options // Http server options
@@ -187,11 +184,18 @@ var (
ImageUploadProvider string ImageUploadProvider string
) )
// TODO move all global vars to this struct
type Cfg struct { type Cfg struct {
Raw *ini.File Raw *ini.File
// HTTP Server Settings
AppUrl string
AppSubUrl string
// Paths // Paths
ProvisioningPath string ProvisioningPath string
DataPath string
LogsPath string
// SMTP email settings // SMTP email settings
Smtp SmtpSettings Smtp SmtpSettings
@@ -411,7 +415,7 @@ func loadSpecifedConfigFile(configFile string, masterFile *ini.File) error {
return nil return nil
} }
func loadConfiguration(args *CommandLineArgs) (*ini.File, error) { func (cfg *Cfg) loadConfiguration(args *CommandLineArgs) (*ini.File, error) {
var err error var err error
// load config defaults // load config defaults
@@ -442,7 +446,7 @@ func loadConfiguration(args *CommandLineArgs) (*ini.File, error) {
// load specified config file // load specified config file
err = loadSpecifedConfigFile(args.Config, parsedFile) err = loadSpecifedConfigFile(args.Config, parsedFile)
if err != nil { if err != nil {
initLogging(parsedFile) cfg.initLogging(parsedFile)
log.Fatal(3, err.Error()) log.Fatal(3, err.Error())
} }
@@ -459,8 +463,8 @@ func loadConfiguration(args *CommandLineArgs) (*ini.File, error) {
evalConfigValues(parsedFile) evalConfigValues(parsedFile)
// update data path and logging config // update data path and logging config
DataPath = makeAbsolute(parsedFile.Section("paths").Key("data").String(), HomePath) cfg.DataPath = makeAbsolute(parsedFile.Section("paths").Key("data").String(), HomePath)
initLogging(parsedFile) cfg.initLogging(parsedFile)
return parsedFile, err return parsedFile, err
} }
@@ -517,7 +521,7 @@ func NewCfg() *Cfg {
func (cfg *Cfg) Load(args *CommandLineArgs) error { func (cfg *Cfg) Load(args *CommandLineArgs) error {
setHomePath(args) setHomePath(args)
iniFile, err := loadConfiguration(args) iniFile, err := cfg.loadConfiguration(args)
if err != nil { if err != nil {
return err return err
} }
@@ -538,6 +542,8 @@ func (cfg *Cfg) Load(args *CommandLineArgs) error {
cfg.ProvisioningPath = makeAbsolute(iniFile.Section("paths").Key("provisioning").String(), HomePath) cfg.ProvisioningPath = makeAbsolute(iniFile.Section("paths").Key("provisioning").String(), HomePath)
server := iniFile.Section("server") server := iniFile.Section("server")
AppUrl, AppSubUrl = parseAppUrlAndSubUrl(server) AppUrl, AppSubUrl = parseAppUrlAndSubUrl(server)
cfg.AppUrl = AppUrl
cfg.AppSubUrl = AppSubUrl
Protocol = HTTP Protocol = HTTP
if server.Key("protocol").MustString("http") == "https" { if server.Key("protocol").MustString("http") == "https" {
@@ -662,7 +668,7 @@ func (cfg *Cfg) Load(args *CommandLineArgs) error {
log.Fatal(4, "Invalid callback_url(%s): %s", cfg.RendererCallbackUrl, err) log.Fatal(4, "Invalid callback_url(%s): %s", cfg.RendererCallbackUrl, err)
} }
} }
cfg.ImagesDir = filepath.Join(DataPath, "png") cfg.ImagesDir = filepath.Join(cfg.DataPath, "png")
cfg.PhantomDir = filepath.Join(HomePath, "tools/phantomjs") cfg.PhantomDir = filepath.Join(HomePath, "tools/phantomjs")
cfg.TempDataLifetime = iniFile.Section("paths").Key("temp_data_lifetime").MustDuration(time.Second * 3600 * 24) cfg.TempDataLifetime = iniFile.Section("paths").Key("temp_data_lifetime").MustDuration(time.Second * 3600 * 24)
cfg.MetricsEndpointEnabled = iniFile.Section("metrics").Key("enabled").MustBool(true) cfg.MetricsEndpointEnabled = iniFile.Section("metrics").Key("enabled").MustBool(true)
@@ -720,7 +726,7 @@ func (cfg *Cfg) readSessionConfig() {
SessionOptions.IDLength = 16 SessionOptions.IDLength = 16
if SessionOptions.Provider == "file" { if SessionOptions.Provider == "file" {
SessionOptions.ProviderConfig = makeAbsolute(SessionOptions.ProviderConfig, DataPath) SessionOptions.ProviderConfig = makeAbsolute(SessionOptions.ProviderConfig, cfg.DataPath)
os.MkdirAll(path.Dir(SessionOptions.ProviderConfig), os.ModePerm) os.MkdirAll(path.Dir(SessionOptions.ProviderConfig), os.ModePerm)
} }
@@ -731,15 +737,15 @@ func (cfg *Cfg) readSessionConfig() {
SessionConnMaxLifetime = cfg.Raw.Section("session").Key("conn_max_lifetime").MustInt64(14400) SessionConnMaxLifetime = cfg.Raw.Section("session").Key("conn_max_lifetime").MustInt64(14400)
} }
func initLogging(file *ini.File) { func (cfg *Cfg) initLogging(file *ini.File) {
// split on comma // split on comma
LogModes = strings.Split(file.Section("log").Key("mode").MustString("console"), ",") logModes := strings.Split(file.Section("log").Key("mode").MustString("console"), ",")
// also try space // also try space
if len(LogModes) == 1 { if len(logModes) == 1 {
LogModes = strings.Split(file.Section("log").Key("mode").MustString("console"), " ") logModes = strings.Split(file.Section("log").Key("mode").MustString("console"), " ")
} }
LogsPath = makeAbsolute(file.Section("paths").Key("logs").String(), HomePath) cfg.LogsPath = makeAbsolute(file.Section("paths").Key("logs").String(), HomePath)
log.ReadLoggingConfig(LogModes, LogsPath, file) log.ReadLoggingConfig(logModes, cfg.LogsPath, file)
} }
func (cfg *Cfg) LogConfigSources() { func (cfg *Cfg) LogConfigSources() {
@@ -763,8 +769,8 @@ func (cfg *Cfg) LogConfigSources() {
} }
logger.Info("Path Home", "path", HomePath) logger.Info("Path Home", "path", HomePath)
logger.Info("Path Data", "path", DataPath) logger.Info("Path Data", "path", cfg.DataPath)
logger.Info("Path Logs", "path", LogsPath) logger.Info("Path Logs", "path", cfg.LogsPath)
logger.Info("Path Plugins", "path", PluginsPath) logger.Info("Path Plugins", "path", PluginsPath)
logger.Info("Path Provisioning", "path", cfg.ProvisioningPath) logger.Info("Path Provisioning", "path", cfg.ProvisioningPath)
logger.Info("App mode " + Env) logger.Info("App mode " + Env)
+12 -12
View File
@@ -30,8 +30,8 @@ func TestLoadingSettings(t *testing.T) {
cfg.Load(&CommandLineArgs{HomePath: "../../"}) cfg.Load(&CommandLineArgs{HomePath: "../../"})
So(AdminUser, ShouldEqual, "superduper") So(AdminUser, ShouldEqual, "superduper")
So(DataPath, ShouldEqual, filepath.Join(HomePath, "data")) So(cfg.DataPath, ShouldEqual, filepath.Join(HomePath, "data"))
So(LogsPath, ShouldEqual, filepath.Join(DataPath, "log")) So(cfg.LogsPath, ShouldEqual, filepath.Join(cfg.DataPath, "log"))
}) })
Convey("Should replace password when defined in environment", func() { Convey("Should replace password when defined in environment", func() {
@@ -76,8 +76,8 @@ func TestLoadingSettings(t *testing.T) {
HomePath: "../../", HomePath: "../../",
Args: []string{`cfg:paths.data=c:\tmp\data`, `cfg:paths.logs=c:\tmp\logs`}, Args: []string{`cfg:paths.data=c:\tmp\data`, `cfg:paths.logs=c:\tmp\logs`},
}) })
So(DataPath, ShouldEqual, `c:\tmp\data`) So(cfg.DataPath, ShouldEqual, `c:\tmp\data`)
So(LogsPath, ShouldEqual, `c:\tmp\logs`) So(cfg.LogsPath, ShouldEqual, `c:\tmp\logs`)
} else { } else {
cfg := NewCfg() cfg := NewCfg()
cfg.Load(&CommandLineArgs{ cfg.Load(&CommandLineArgs{
@@ -85,8 +85,8 @@ func TestLoadingSettings(t *testing.T) {
Args: []string{"cfg:paths.data=/tmp/data", "cfg:paths.logs=/tmp/logs"}, Args: []string{"cfg:paths.data=/tmp/data", "cfg:paths.logs=/tmp/logs"},
}) })
So(DataPath, ShouldEqual, "/tmp/data") So(cfg.DataPath, ShouldEqual, "/tmp/data")
So(LogsPath, ShouldEqual, "/tmp/logs") So(cfg.LogsPath, ShouldEqual, "/tmp/logs")
} }
}) })
@@ -112,7 +112,7 @@ func TestLoadingSettings(t *testing.T) {
Args: []string{`cfg:default.paths.data=c:\tmp\data`}, Args: []string{`cfg:default.paths.data=c:\tmp\data`},
}) })
So(DataPath, ShouldEqual, `c:\tmp\override`) So(cfg.DataPath, ShouldEqual, `c:\tmp\override`)
} else { } else {
cfg := NewCfg() cfg := NewCfg()
cfg.Load(&CommandLineArgs{ cfg.Load(&CommandLineArgs{
@@ -121,7 +121,7 @@ func TestLoadingSettings(t *testing.T) {
Args: []string{"cfg:default.paths.data=/tmp/data"}, Args: []string{"cfg:default.paths.data=/tmp/data"},
}) })
So(DataPath, ShouldEqual, "/tmp/override") So(cfg.DataPath, ShouldEqual, "/tmp/override")
} }
}) })
@@ -134,7 +134,7 @@ func TestLoadingSettings(t *testing.T) {
Args: []string{`cfg:paths.data=c:\tmp\data`}, Args: []string{`cfg:paths.data=c:\tmp\data`},
}) })
So(DataPath, ShouldEqual, `c:\tmp\data`) So(cfg.DataPath, ShouldEqual, `c:\tmp\data`)
} else { } else {
cfg := NewCfg() cfg := NewCfg()
cfg.Load(&CommandLineArgs{ cfg.Load(&CommandLineArgs{
@@ -143,7 +143,7 @@ func TestLoadingSettings(t *testing.T) {
Args: []string{"cfg:paths.data=/tmp/data"}, Args: []string{"cfg:paths.data=/tmp/data"},
}) })
So(DataPath, ShouldEqual, "/tmp/data") So(cfg.DataPath, ShouldEqual, "/tmp/data")
} }
}) })
@@ -156,7 +156,7 @@ func TestLoadingSettings(t *testing.T) {
Args: []string{"cfg:paths.data=${GF_DATA_PATH}"}, Args: []string{"cfg:paths.data=${GF_DATA_PATH}"},
}) })
So(DataPath, ShouldEqual, `c:\tmp\env_override`) So(cfg.DataPath, ShouldEqual, `c:\tmp\env_override`)
} else { } else {
os.Setenv("GF_DATA_PATH", "/tmp/env_override") os.Setenv("GF_DATA_PATH", "/tmp/env_override")
cfg := NewCfg() cfg := NewCfg()
@@ -165,7 +165,7 @@ func TestLoadingSettings(t *testing.T) {
Args: []string{"cfg:paths.data=${GF_DATA_PATH}"}, Args: []string{"cfg:paths.data=${GF_DATA_PATH}"},
}) })
So(DataPath, ShouldEqual, "/tmp/env_override") So(cfg.DataPath, ShouldEqual, "/tmp/env_override")
} }
}) })