X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=lib%2Fxdsconfig%2Ffileconfig.go;h=d936bbe205df7eda5dd6e34a9bbc7bde316df9ae;hb=fa1a0fa5e47260349d2da761b499223d11324b58;hp=add6ef776e4b52d3728e67da940327940b37e13c;hpb=36e2400d1c0249e81f910e48a967e0202d5a8d46;p=src%2Fxds%2Fxds-agent.git diff --git a/lib/xdsconfig/fileconfig.go b/lib/xdsconfig/fileconfig.go index add6ef7..d936bbe 100644 --- a/lib/xdsconfig/fileconfig.go +++ b/lib/xdsconfig/fileconfig.go @@ -5,7 +5,6 @@ import ( "os" "os/user" "path" - "path/filepath" common "github.com/iotbzh/xds-common/golib" ) @@ -27,9 +26,8 @@ type FileConfig struct { // getConfigFromFile reads configuration from a config file. // Order to determine which config file is used: // 1/ from command line option: "--config myConfig.json" -// 2/ $HOME/.xds/agent-config.json file -// 3/ /agent-config.json file -// 4/ /agent-config.json file +// 2/ $HOME/.xds/agent/agent-config.json file +// 3/ /etc/xds-agent/config.json file func updateConfigFromFile(c *Config, confFile string) (*FileConfig, error) { @@ -38,17 +36,11 @@ func updateConfigFromFile(c *Config, confFile string) (*FileConfig, error) { searchIn = append(searchIn, confFile) } if usr, err := user.Current(); err == nil { - searchIn = append(searchIn, path.Join(usr.HomeDir, ".xds", "agent-config.json")) - } - cwd, err := os.Getwd() - if err == nil { - searchIn = append(searchIn, path.Join(cwd, "agent-config.json")) - } - exePath, err := filepath.Abs(filepath.Dir(os.Args[0])) - if err == nil { - searchIn = append(searchIn, path.Join(exePath, "agent-config.json")) + searchIn = append(searchIn, path.Join(usr.HomeDir, ".xds", "agent", "agent-config.json")) } + searchIn = append(searchIn, "/etc/xds-agent/config.json") + var cFile *string for _, p := range searchIn { if _, err := os.Stat(p); err == nil { @@ -56,30 +48,32 @@ func updateConfigFromFile(c *Config, confFile string) (*FileConfig, error) { break } } - fCfg := FileConfig{} - if cFile == nil { - // No config file found - return &fCfg, nil - } + // Use default settings + fCfg := *c.FileConf - c.Log.Infof("Use config file: %s", *cFile) + // Read config file when existing + if cFile != nil { + c.Log.Infof("Use config file: %s", *cFile) - // TODO move on viper package to support comments in JSON and also - // bind with flags (command line options) - // see https://github.com/spf13/viper#working-with-flags + // TODO move on viper package to support comments in JSON and also + // bind with flags (command line options) + // see https://github.com/spf13/viper#working-with-flags - fd, _ := os.Open(*cFile) - defer fd.Close() - if err := json.NewDecoder(fd).Decode(&fCfg); err != nil { - return nil, err + fd, _ := os.Open(*cFile) + defer fd.Close() + if err := json.NewDecoder(fd).Decode(&fCfg); err != nil { + return nil, err + } } // Support environment variables (IOW ${MY_ENV_VAR} syntax) in agent-config.json - for _, field := range []*string{ + vars := []*string{ &fCfg.LogsDir, - &fCfg.SThgConf.Home, - &fCfg.SThgConf.BinDir} { - + } + if fCfg.SThgConf != nil { + vars = append(vars, &fCfg.SThgConf.Home, &fCfg.SThgConf.BinDir) + } + for _, field := range vars { var err error *field, err = common.ResolveEnvVar(*field) if err != nil { @@ -92,5 +86,11 @@ func updateConfigFromFile(c *Config, confFile string) (*FileConfig, error) { c.HTTPPort = fCfg.HTTPPort } + // Set default apikey + // FIXME - rework with dynamic key + if fCfg.XDSAPIKey == "" { + fCfg.XDSAPIKey = "1234abcezam" + } + return &fCfg, nil }