diff --git a/app/vmalert/Makefile b/app/vmalert/Makefile index 8680e2fac5..9f200f0c22 100644 --- a/app/vmalert/Makefile +++ b/app/vmalert/Makefile @@ -73,6 +73,7 @@ test-vmalert: go test -v -race -cover ./app/vmalert/notifier go test -v -race -cover ./app/vmalert/config go test -v -race -cover ./app/vmalert/remotewrite + go test -v -race -cover ./app/vmalert/utils run-vmalert: vmalert ./bin/vmalert -rule=app/vmalert/config/testdata/rules/rules2-good.rules \ diff --git a/app/vmalert/datasource/vm.go b/app/vmalert/datasource/vm.go index 31c43e2563..46fe851385 100644 --- a/app/vmalert/datasource/vm.go +++ b/app/vmalert/datasource/vm.go @@ -29,6 +29,7 @@ func toDatasourceType(s string) datasourceType { } // VMStorage represents vmstorage entity with ability to read and write metrics +// WARN: when adding a new field, remember to update Clone() method. type VMStorage struct { c *http.Client authCfg *promauth.Config @@ -58,11 +59,16 @@ func (s *VMStorage) Clone() *VMStorage { c: s.c, authCfg: s.authCfg, datasourceURL: s.datasourceURL, + appendTypePrefix: s.appendTypePrefix, lookBack: s.lookBack, queryStep: s.queryStep, - appendTypePrefix: s.appendTypePrefix, - dataSourceType: s.dataSourceType, - extraParams: s.extraParams, + + dataSourceType: s.dataSourceType, + evaluationInterval: s.evaluationInterval, + extraParams: s.extraParams, + extraHeaders: s.extraHeaders, + + debug: s.debug, } } @@ -70,23 +76,18 @@ func (s *VMStorage) Clone() *VMStorage { func (s *VMStorage) ApplyParams(params QuerierParams) *VMStorage { s.dataSourceType = toDatasourceType(params.DataSourceType) s.evaluationInterval = params.EvaluationInterval - if len(params.QueryParams) != 0 { - for k, vl := range params.QueryParams { - if s.extraParams.Has(k) { - s.extraParams.Del(k) - } - for _, v := range vl { - s.extraParams.Add(k, v) - } + for k, vl := range params.QueryParams { + for _, v := range vl { // custom query params are prior to default ones + s.extraParams.Set(k, v) } } - s.debug = params.Debug if params.Headers != nil { for key, value := range params.Headers { kv := keyValue{key: key, value: value} s.extraHeaders = append(s.extraHeaders, kv) } } + s.debug = params.Debug return s }