diff --git a/mixin-utils/test/test_native-classic-histogram.libsonnet b/mixin-utils/test/test_native-classic-histogram.libsonnet index f5139ef96..8a2f90e7b 100644 --- a/mixin-utils/test/test_native-classic-histogram.libsonnet +++ b/mixin-utils/test/test_native-classic-histogram.libsonnet @@ -228,3 +228,13 @@ test.new(std.thisFile) }, ) ) ++ test.case.new( + name='simple templating', + test=test.expect.eq( + actual=utils.ncHistogramApplyTemplate('label_replace(%s, "x", "$1", "y", "(.*)")', { classic: 'classic_query', native: 'native_query' }), + expected={ + classic: 'label_replace(classic_query, "x", "$1", "y", "(.*)")', + native: 'label_replace(native_query, "x", "$1", "y", "(.*)")', + } + ) +) diff --git a/mixin-utils/utils.libsonnet b/mixin-utils/utils.libsonnet index 84c46c69d..01eeda884 100644 --- a/mixin-utils/utils.libsonnet +++ b/mixin-utils/utils.libsonnet @@ -170,6 +170,16 @@ local g = import 'grafana-builder/grafana.libsonnet'; }, }, + // ncHistogramApplyTemplate (native classic histogram template applier) + // Takes a template like 'label_replace(%s, "x", "$1", "y", ".*")' + // with a single substitution and applies to both the classic and native + // histogram query. + ncHistogramApplyTemplate(template, query):: { + assert $.isNativeClassicQuery(query), + native: template % query.native, + classic: template % query.classic, + }, + // ncHistogramComment (native classic histogram comment) helps attach // comments to the query and also keep multiline strings where applicable. ncHistogramComment(query, comment):: {