diff --git a/docs/configuration/template_reference.md b/docs/configuration/template_reference.md index 4b3bc5580..ff664af06 100644 --- a/docs/configuration/template_reference.md +++ b/docs/configuration/template_reference.md @@ -74,7 +74,7 @@ versions. | reReplaceAll | pattern, replacement, text | string | [Regexp.ReplaceAllString](https://golang.org/pkg/regexp/#Regexp.ReplaceAllString) Regexp substitution, unanchored. | | graphLink | expr | string | Returns path to graph view in the [expression browser](https://prometheus.io/docs/visualization/browser/) for the expression. | | tableLink | expr | string | Returns path to tabular ("Table") view in the [expression browser](https://prometheus.io/docs/visualization/browser/) for the expression. | -| parseDuration | string | string | Parses a duration string such as "1h" into the integer number of seconds it represents. | +| parseDuration | string | float | Parses a duration string such as "1h" into the number of seconds it represents. | ### Others diff --git a/template/template.go b/template/template.go index f3e62ca9f..e79de5ee6 100644 --- a/template/template.go +++ b/template/template.go @@ -304,13 +304,12 @@ func NewTemplateExpander( "externalURL": func() string { return externalURL.String() }, - "parseDuration": func(d string) (string, error) { + "parseDuration": func(d string) (float64, error) { v, err := model.ParseDuration(d) if err != nil { - return "", err + return 0, err } - dur := int64(time.Duration(v) / time.Second) - return fmt.Sprintf("%d", dur), nil + return float64(time.Duration(v)) / float64(time.Second), nil }, }, options: options, diff --git a/template/template_test.go b/template/template_test.go index 3080455d4..f3af79712 100644 --- a/template/template_test.go +++ b/template/template_test.go @@ -450,9 +450,9 @@ func TestTemplateExpansion(t *testing.T) { output: "http://testhost:9090/path/prefix", }, { - // parseDuration. - text: "{{ parseDuration \"1h2m10ms\" }}", - output: "3720", + // parseDuration (using printf to ensure the return is a string). + text: "{{ printf \"%0.2f\" (parseDuration \"1h2m10ms\") }}", + output: "3720.01", }, }