diff --git a/services/opentsdb/config.go b/services/opentsdb/config.go index 324002b720..0e0ddf0f7c 100644 --- a/services/opentsdb/config.go +++ b/services/opentsdb/config.go @@ -30,3 +30,22 @@ func NewConfig() Config { ConsistencyLevel: DefaultConsistencyLevel, } } + +// WithDefaults takes the given config and returns a new config with any required +// default values set. +func (c *Config) WithDefaults() *Config { + d := *c + if d.BindAddress == "" { + d.BindAddress = DefaultBindAddress + } + if d.Database == "" { + d.Database = DefaultDatabase + } + if d.RetentionPolicy == "" { + d.RetentionPolicy = DefaultRetentionPolicy + } + if d.ConsistencyLevel == "" { + d.ConsistencyLevel = DefaultConsistencyLevel + } + return &d +} diff --git a/services/opentsdb/service.go b/services/opentsdb/service.go index cdaecd20fa..f774ce1976 100644 --- a/services/opentsdb/service.go +++ b/services/opentsdb/service.go @@ -44,16 +44,19 @@ type Service struct { // NewService returns a new instance of Service. func NewService(c Config) (*Service, error) { - consistencyLevel, err := cluster.ParseConsistencyLevel(c.ConsistencyLevel) + // Use defaults where necessary. + d := c.WithDefaults() + + consistencyLevel, err := cluster.ParseConsistencyLevel(d.ConsistencyLevel) if err != nil { return nil, err } s := &Service{ err: make(chan error), - BindAddress: c.BindAddress, - Database: c.Database, - RetentionPolicy: c.RetentionPolicy, + BindAddress: d.BindAddress, + Database: d.Database, + RetentionPolicy: d.RetentionPolicy, ConsistencyLevel: consistencyLevel, Logger: log.New(os.Stderr, "[opentsdb] ", log.LstdFlags), }