From eb7416e71ffa029ea7521a53b7e7f1f9f7976e3f Mon Sep 17 00:00:00 2001 From: Robert Jacob Date: Wed, 2 Sep 2015 15:08:37 +0200 Subject: [PATCH] Fix missing unmarshal for Marathon SD config. --- config/config.go | 4 ++++ config/config_test.go | 21 +++++++++++++++++++++ config/testdata/conf.good.yml | 5 +++++ config/testdata/marathon_no_servers.bad.yml | 10 ++++++++++ 4 files changed, 40 insertions(+) create mode 100644 config/testdata/marathon_no_servers.bad.yml diff --git a/config/config.go b/config/config.go index ece179305..0c8f05080 100644 --- a/config/config.go +++ b/config/config.go @@ -626,6 +626,10 @@ type KubernetesSDConfig struct { func (c *MarathonSDConfig) UnmarshalYAML(unmarshal func(interface{}) error) error { *c = DefaultMarathonSDConfig type plain MarathonSDConfig + err := unmarshal((*plain)(c)) + if err != nil { + return err + } if len(c.Servers) == 0 { return fmt.Errorf("Marathon SD config must contain at least one Marathon server") } diff --git a/config/config_test.go b/config/config_test.go index cbd9034e7..05eb97f56 100644 --- a/config/config_test.go +++ b/config/config_test.go @@ -205,6 +205,24 @@ var expectedConf = &Config{ }, }, }, + { + JobName: "service-marathon", + + ScrapeInterval: Duration(15 * time.Second), + ScrapeTimeout: DefaultGlobalConfig.ScrapeTimeout, + + MetricsPath: DefaultScrapeConfig.MetricsPath, + Scheme: DefaultScrapeConfig.Scheme, + + MarathonSDConfigs: []*MarathonSDConfig{ + { + Servers: []string{ + "http://marathon.example.com:8080", + }, + RefreshInterval: Duration(30 * time.Second), + }, + }, + }, }, original: "", } @@ -280,6 +298,9 @@ var expectedErrors = []struct { }, { filename: "bearertoken_basicauth.bad.yml", errMsg: "at most one of basic_auth, bearer_token & bearer_token_file must be configured", + }, { + filename: "marathon_no_servers.bad.yml", + errMsg: "Marathon SD config must contain at least one Marathon server", }, } diff --git a/config/testdata/conf.good.yml b/config/testdata/conf.good.yml index 979c79bc3..18a32f238 100644 --- a/config/testdata/conf.good.yml +++ b/config/testdata/conf.good.yml @@ -106,3 +106,8 @@ scrape_configs: - server: 'https://localhost:1234' username: 'myusername' password: 'mypassword' + +- job_name: service-marathon + marathon_sd_configs: + - servers: + - 'http://marathon.example.com:8080' diff --git a/config/testdata/marathon_no_servers.bad.yml b/config/testdata/marathon_no_servers.bad.yml new file mode 100644 index 000000000..df245e91b --- /dev/null +++ b/config/testdata/marathon_no_servers.bad.yml @@ -0,0 +1,10 @@ +# my global config +global: + scrape_interval: 15s + evaluation_interval: 30s + +scrape_configs: + +- job_name: service-marathon + marathon_sd_configs: + - servers: