Skip to content

Commit

Permalink
refactor parse config on startup
Browse files Browse the repository at this point in the history
  • Loading branch information
corylanou committed Apr 13, 2015
1 parent 261ff11 commit 011fdd0
Show file tree
Hide file tree
Showing 3 changed files with 57 additions and 46 deletions.
18 changes: 15 additions & 3 deletions cmd/influxd/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -136,15 +136,27 @@ func execConfig(args []string) {
}

var (
configPath = fs.String("config", "", "")
hostname = fs.String("hostname", "", "")
configPath string
hostname string
)
fs.StringVar(&configPath, "config", "", "")
fs.StringVar(&hostname, "hostname", "", "")
fs.Parse(args)

config, err := parseConfig(*configPath, *hostname)
var config *Config
var err error
if configPath == "" {
config, err = NewTestConfig()
} else {
config, err = ParseConfigFile(configPath)
}
if err != nil {
log.Fatalf("parse config: %s", err)
}
// Override config properties.
if hostname != "" {
config.Hostname = hostname
}

config.Write(os.Stdout)
}
Expand Down
11 changes: 8 additions & 3 deletions cmd/influxd/restore.go
Original file line number Diff line number Diff line change
Expand Up @@ -98,11 +98,16 @@ func (cmd *RestoreCommand) parseFlags(args []string) (*Config, string, error) {
}

// Parse configuration file from disk.
config, err := parseConfig(*configPath, "")
var config *Config
var err error
if *configPath == "" {
config, err = NewTestConfig()

This comment has been minimized.

Copy link
@otoolep

otoolep Apr 13, 2015

Contributor

I am not familiar with this NewTestConfig -- what is going on here?

log.Println("No config provided, using default settings")
} else {
config, err = ParseConfig(*configPath)
}
if err != nil {
log.Fatal(err)
} else if *configPath == "" {
log.Println("No config provided, using default settings")
}

// Require output path.
Expand Down
74 changes: 34 additions & 40 deletions cmd/influxd/run.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@ import (

type RunCommand struct {
// The logger passed to the ticker during execution.
Logger *log.Logger
logWriter *os.File
config *Config
hostname string
Expand Down Expand Up @@ -160,10 +159,34 @@ func (s *Node) closeSnapshotListener() error {
return err
}

func (cmd *RunCommand) Run(args ...string) error {
// Set up logger.
cmd.Logger = log.New(os.Stderr, "", log.LstdFlags)
func (cmd *RunCommand) ParseConfig(path, hostname string) error {
var err error

// Parse configuration file from disk.
if path != "" {
cmd.config, err = ParseConfigFile(path)

if err != nil {
return fmt.Errorf("error parsing config %s - %s\n", path, err)
}
// Override config properties.
if hostname != "" {
cmd.config.Hostname = hostname
}

log.Printf("using config: %s\n", path)
return nil
}

cmd.config, err = NewTestConfig()
if err != nil {
return fmt.Errorf("error parsing default config: %s\n", err)
}
log.Println("no config provided, using default settings")
return nil
}

func (cmd *RunCommand) Run(args ...string) error {
// Parse command flags.
fs := flag.NewFlagSet("", flag.ExitOnError)
var configPath, pidfile, hostname, join, cpuprofile, memprofile string
Expand Down Expand Up @@ -191,19 +214,9 @@ func (cmd *RunCommand) Run(args ...string) error {
runtime.GOMAXPROCS(runtime.NumCPU())
log.Printf("GOMAXPROCS set to %d", runtime.GOMAXPROCS(0))

var err error

// Parse configuration file from disk.
if configPath != "" {
cmd.config, err = parseConfig(configPath, hostname)
} else {
cmd.config, err = NewTestConfig()
}

if err != nil {
cmd.Logger.Fatal(err)
} else if configPath == "" {
cmd.Logger.Println("No config provided, using default settings")
// Parse config
if err := cmd.ParseConfig(configPath, hostname); err != nil {
log.Fatal(err)
}

// Use the config JoinURLs by default
Expand All @@ -224,15 +237,15 @@ func (cmd *RunCommand) Run(args ...string) error {
// CheckConfig validates the configuration
func (cmd *RunCommand) CheckConfig() {
if !(cmd.config.Data.Enabled || cmd.config.Broker.Enabled) {
cmd.Logger.Fatal("Node must be configured as a broker node, data node, or as both. Run `influxd config` to generate a valid configuration.")
log.Fatal("Node must be configured as a broker node, data node, or as both. Run `influxd config` to generate a valid configuration.")
}

if cmd.config.Broker.Enabled && cmd.config.Broker.Dir == "" {
cmd.Logger.Fatal("Broker.Dir must be specified. Run `influxd config` to generate a valid configuration.")
log.Fatal("Broker.Dir must be specified. Run `influxd config` to generate a valid configuration.")
}

if cmd.config.Data.Enabled && cmd.config.Data.Dir == "" {
cmd.Logger.Fatal("Data.Dir must be specified. Run `influxd config` to generate a valid configuration.")
log.Fatal("Data.Dir must be specified. Run `influxd config` to generate a valid configuration.")
}
}

Expand Down Expand Up @@ -274,6 +287,7 @@ func (cmd *RunCommand) Open(config *Config, join string) *Node {
//FIXME: Need to also pass in dataURLs to bootstrap a data node
s = cmd.openServer(joinURLs)
s.SetAuthenticationEnabled(cmd.config.Authentication.Enabled)
log.Printf("authentication enabled: %v\n", cmd.config.Authentication.Enabled)

// Enable retention policy enforcement if requested.
if cmd.config.Data.RetentionCheckEnabled {
Expand Down Expand Up @@ -455,26 +469,6 @@ func writePIDFile(path string) {
}
}

// parseConfig parses the configuration from a given path. Sets overrides as needed.
func parseConfig(path, hostname string) (*Config, error) {
if path == "" {
return NewConfig(), nil
}

// Parse configuration.
config, err := ParseConfigFile(path)
if err != nil {
return nil, fmt.Errorf("config: %s", err)
}

// Override config properties.
if hostname != "" {
config.Hostname = hostname
}

return config, nil
}

// creates and initializes a broker.
func (cmd *RunCommand) openBroker(brokerURLs []url.URL) {
path := cmd.config.BrokerDir()
Expand Down

0 comments on commit 011fdd0

Please sign in to comment.