@intentius/chant-lexicon-grafana 0.98.0 → 0.100.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +24 -8
- package/dist/actions/grafana.d.ts +24 -0
- package/dist/actions/grafana.d.ts.map +1 -0
- package/dist/actions/index.d.ts +2 -0
- package/dist/actions/index.d.ts.map +1 -0
- package/dist/alerting-build.d.ts +128 -0
- package/dist/alerting-build.d.ts.map +1 -0
- package/dist/alerting.d.ts +273 -0
- package/dist/alerting.d.ts.map +1 -0
- package/dist/annotations.d.ts +61 -0
- package/dist/annotations.d.ts.map +1 -0
- package/dist/api/apply.d.ts +160 -0
- package/dist/api/apply.d.ts.map +1 -0
- package/dist/api/bind.d.ts +32 -0
- package/dist/api/bind.d.ts.map +1 -0
- package/dist/api/client.d.ts +76 -0
- package/dist/api/client.d.ts.map +1 -0
- package/dist/api/converge.d.ts +33 -0
- package/dist/api/converge.d.ts.map +1 -0
- package/dist/api/dashboards.d.ts +102 -0
- package/dist/api/dashboards.d.ts.map +1 -0
- package/dist/api/datasources.d.ts +26 -0
- package/dist/api/datasources.d.ts.map +1 -0
- package/dist/api/fake-grafana-writes.d.ts +41 -0
- package/dist/api/fake-grafana-writes.d.ts.map +1 -0
- package/dist/api/fake-grafana.d.ts +63 -0
- package/dist/api/fake-grafana.d.ts.map +1 -0
- package/dist/api/folders.d.ts +146 -0
- package/dist/api/folders.d.ts.map +1 -0
- package/dist/api/library-panels.d.ts +52 -0
- package/dist/api/library-panels.d.ts.map +1 -0
- package/dist/build.d.ts +55 -6
- package/dist/build.d.ts.map +1 -1
- package/dist/catalog.d.ts +1 -1
- package/dist/catalog.d.ts.map +1 -1
- package/dist/codegen/docs.d.ts.map +1 -1
- package/dist/codegen/generate.d.ts +7 -1
- package/dist/codegen/generate.d.ts.map +1 -1
- package/dist/codegen/schema-types.d.ts +3 -3
- package/dist/codegen/schema-types.d.ts.map +1 -1
- package/dist/composites/agent-dashboard.d.ts.map +1 -1
- package/dist/composites/catalog.d.ts.map +1 -1
- package/dist/composites/index.d.ts +4 -2
- package/dist/composites/index.d.ts.map +1 -1
- package/dist/composites/red-dashboard.d.ts +21 -2
- package/dist/composites/red-dashboard.d.ts.map +1 -1
- package/dist/composites/shared.d.ts +11 -3
- package/dist/composites/shared.d.ts.map +1 -1
- package/dist/composites/slo-alert-rules.d.ts +92 -0
- package/dist/composites/slo-alert-rules.d.ts.map +1 -0
- package/dist/config.d.ts +111 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/contact-point-secrets.d.ts +17 -0
- package/dist/contact-point-secrets.d.ts.map +1 -0
- package/dist/dashboard.d.ts +51 -9
- package/dist/dashboard.d.ts.map +1 -1
- package/dist/datasource-refs.d.ts +99 -0
- package/dist/datasource-refs.d.ts.map +1 -0
- package/dist/datasource-settings.d.ts +834 -0
- package/dist/datasource-settings.d.ts.map +1 -0
- package/dist/datasource.d.ts +82 -11
- package/dist/datasource.d.ts.map +1 -1
- package/dist/deep-observe-hooks.d.ts +64 -0
- package/dist/deep-observe-hooks.d.ts.map +1 -0
- package/dist/deep-observe.d.ts +47 -0
- package/dist/deep-observe.d.ts.map +1 -0
- package/dist/describe-resources.d.ts +50 -0
- package/dist/describe-resources.d.ts.map +1 -0
- package/dist/detect.d.ts +32 -3
- package/dist/detect.d.ts.map +1 -1
- package/dist/export-resources.d.ts +38 -0
- package/dist/export-resources.d.ts.map +1 -0
- package/dist/folder.d.ts +68 -0
- package/dist/folder.d.ts.map +1 -0
- package/dist/import/alerting.d.ts +40 -0
- package/dist/import/alerting.d.ts.map +1 -0
- package/dist/import/edits.d.ts +47 -0
- package/dist/import/edits.d.ts.map +1 -0
- package/dist/import/embedded.d.ts +14 -0
- package/dist/import/embedded.d.ts.map +1 -0
- package/dist/import/generator.d.ts +60 -0
- package/dist/import/generator.d.ts.map +1 -0
- package/dist/import/live-export.d.ts +108 -0
- package/dist/import/live-export.d.ts.map +1 -0
- package/dist/import/mappings.d.ts +89 -0
- package/dist/import/mappings.d.ts.map +1 -0
- package/dist/import/model.d.ts +105 -0
- package/dist/import/model.d.ts.map +1 -0
- package/dist/import/normalize-alerting.d.ts +26 -0
- package/dist/import/normalize-alerting.d.ts.map +1 -0
- package/dist/import/normalize.d.ts +74 -0
- package/dist/import/normalize.d.ts.map +1 -0
- package/dist/import/parser.d.ts +125 -0
- package/dist/import/parser.d.ts.map +1 -0
- package/dist/import/report.d.ts +26 -0
- package/dist/import/report.d.ts.map +1 -0
- package/dist/import/testdata/fixtures.d.ts +41 -0
- package/dist/import/testdata/fixtures.d.ts.map +1 -0
- package/dist/import/v2.d.ts +73 -0
- package/dist/import/v2.d.ts.map +1 -0
- package/dist/index.d.ts +31 -12
- package/dist/index.d.ts.map +1 -1
- package/dist/init-templates.d.ts +27 -0
- package/dist/init-templates.d.ts.map +1 -0
- package/dist/integrity.json +22 -12
- package/dist/k8s.d.ts +107 -0
- package/dist/k8s.d.ts.map +1 -0
- package/dist/lint/audit-catalog.d.ts +2 -1
- package/dist/lint/audit-catalog.d.ts.map +1 -1
- package/dist/lint/post-synth/graf101.d.ts +2 -2
- package/dist/lint/post-synth/graf102.d.ts +1 -1
- package/dist/lint/post-synth/graf104.d.ts +2 -2
- package/dist/lint/post-synth/graf106.d.ts +2 -2
- package/dist/lint/post-synth/graf107.d.ts +1 -1
- package/dist/lint/post-synth/graf108.d.ts +8 -0
- package/dist/lint/post-synth/graf108.d.ts.map +1 -0
- package/dist/lint/post-synth/graf109.d.ts +8 -0
- package/dist/lint/post-synth/graf109.d.ts.map +1 -0
- package/dist/lint/post-synth/graf110.d.ts +8 -0
- package/dist/lint/post-synth/graf110.d.ts.map +1 -0
- package/dist/lint/post-synth/graf111.d.ts +8 -0
- package/dist/lint/post-synth/graf111.d.ts.map +1 -0
- package/dist/lint/post-synth/graf112.d.ts +8 -0
- package/dist/lint/post-synth/graf112.d.ts.map +1 -0
- package/dist/lint/post-synth/graf113.d.ts +8 -0
- package/dist/lint/post-synth/graf113.d.ts.map +1 -0
- package/dist/lint/post-synth/graf114.d.ts +8 -0
- package/dist/lint/post-synth/graf114.d.ts.map +1 -0
- package/dist/lint/post-synth/graf115.d.ts +8 -0
- package/dist/lint/post-synth/graf115.d.ts.map +1 -0
- package/dist/lint/post-synth/grafana-helpers.d.ts +7 -5
- package/dist/lint/post-synth/grafana-helpers.d.ts.map +1 -1
- package/dist/lint/post-synth/index.d.ts.map +1 -1
- package/dist/lint/rules/literal-secret.d.ts +7 -3
- package/dist/lint/rules/literal-secret.d.ts.map +1 -1
- package/dist/lsp/hover.d.ts.map +1 -1
- package/dist/manifest.json +1 -1
- package/dist/members.d.ts +27 -0
- package/dist/members.d.ts.map +1 -0
- package/dist/meta.json +205 -0
- package/dist/okf/index.md +53 -4
- package/dist/okf/rules/GRAF002.md +3 -2
- package/dist/okf/rules/GRAF101.md +3 -2
- package/dist/okf/rules/GRAF102.md +1 -0
- package/dist/okf/rules/GRAF104.md +2 -2
- package/dist/okf/rules/GRAF106.md +2 -2
- package/dist/okf/rules/GRAF108.md +11 -0
- package/dist/okf/rules/GRAF109.md +15 -0
- package/dist/okf/rules/GRAF110.md +11 -0
- package/dist/okf/rules/GRAF111.md +11 -0
- package/dist/okf/rules/GRAF112.md +16 -0
- package/dist/okf/rules/GRAF113.md +16 -0
- package/dist/okf/rules/GRAF114.md +11 -0
- package/dist/okf/rules/GRAF115.md +11 -0
- package/dist/okf/types/AdhocVariable.md +9 -0
- package/dist/okf/types/AlertListPanel.md +9 -0
- package/dist/okf/types/AlertQuery.md +9 -0
- package/dist/okf/types/AlertRule.md +9 -0
- package/dist/okf/types/AlertRuleGroup.md +9 -0
- package/dist/okf/types/AzureMonitorQuery.md +9 -0
- package/dist/okf/types/BarChartPanel.md +9 -0
- package/dist/okf/types/BarGaugePanel.md +9 -0
- package/dist/okf/types/BigQueryQuery.md +9 -0
- package/dist/okf/types/CanvasPanel.md +9 -0
- package/dist/okf/types/ClassicConditionsExpression.md +9 -0
- package/dist/okf/types/CloudMonitoringQuery.md +9 -0
- package/dist/okf/types/CloudWatchQuery.md +9 -0
- package/dist/okf/types/ContactPoint.md +14 -0
- package/dist/okf/types/Dashboard.md +2 -1
- package/dist/okf/types/Datasource.md +3 -2
- package/dist/okf/types/DatasourceProvisioning.md +9 -0
- package/dist/okf/types/ElasticsearchQuery.md +9 -0
- package/dist/okf/types/ExternalDatasource.md +15 -0
- package/dist/okf/types/FlameGraphPanel.md +9 -0
- package/dist/okf/types/Folder.md +9 -0
- package/dist/okf/types/GeomapPanel.md +9 -0
- package/dist/okf/types/GroupByVariable.md +9 -0
- package/dist/okf/types/HistogramPanel.md +9 -0
- package/dist/okf/types/MSSQLQuery.md +9 -0
- package/dist/okf/types/MathExpression.md +9 -0
- package/dist/okf/types/MuteTiming.md +13 -0
- package/dist/okf/types/MySQLQuery.md +9 -0
- package/dist/okf/types/NodeGraphPanel.md +9 -0
- package/dist/okf/types/NotificationPolicy.md +9 -0
- package/dist/okf/types/NotificationTemplate.md +9 -0
- package/dist/okf/types/PieChartPanel.md +9 -0
- package/dist/okf/types/PostgresQuery.md +9 -0
- package/dist/okf/types/PyroscopeQuery.md +9 -0
- package/dist/okf/types/ReduceExpression.md +9 -0
- package/dist/okf/types/ResampleExpression.md +9 -0
- package/dist/okf/types/SqlExpression.md +9 -0
- package/dist/okf/types/StateTimelinePanel.md +9 -0
- package/dist/okf/types/StatusHistoryPanel.md +9 -0
- package/dist/okf/types/SwitchVariable.md +9 -0
- package/dist/okf/types/ThresholdExpression.md +9 -0
- package/dist/okf/types/TrendPanel.md +9 -0
- package/dist/okf/types/XYChartPanel.md +9 -0
- package/dist/op/activities/grafana-apply.d.ts +86 -0
- package/dist/op/activities/grafana-apply.d.ts.map +1 -0
- package/dist/op/activities/index.d.ts +9 -0
- package/dist/op/activities/index.d.ts.map +1 -0
- package/dist/op/builders.d.ts +24 -0
- package/dist/op/builders.d.ts.map +1 -0
- package/dist/ownership.d.ts +78 -0
- package/dist/ownership.d.ts.map +1 -0
- package/dist/panel-options.d.ts +65 -0
- package/dist/panel-options.d.ts.map +1 -0
- package/dist/panels.d.ts +46 -9
- package/dist/panels.d.ts.map +1 -1
- package/dist/pin.d.ts +29 -7
- package/dist/pin.d.ts.map +1 -1
- package/dist/plugin.d.ts.map +1 -1
- package/dist/promql-check.d.ts +51 -0
- package/dist/promql-check.d.ts.map +1 -0
- package/dist/query-models.d.ts +95 -0
- package/dist/query-models.d.ts.map +1 -0
- package/dist/query.d.ts +116 -18
- package/dist/query.d.ts.map +1 -1
- package/dist/rules/graf101.ts +3 -3
- package/dist/rules/graf102.ts +1 -1
- package/dist/rules/graf104.ts +3 -3
- package/dist/rules/graf106.ts +3 -3
- package/dist/rules/graf107.ts +1 -1
- package/dist/rules/graf108.ts +17 -0
- package/dist/rules/graf109.ts +17 -0
- package/dist/rules/graf110.ts +17 -0
- package/dist/rules/graf111.ts +17 -0
- package/dist/rules/graf112.ts +17 -0
- package/dist/rules/graf113.ts +17 -0
- package/dist/rules/graf114.ts +17 -0
- package/dist/rules/graf115.ts +17 -0
- package/dist/rules/grafana-helpers.ts +27 -10
- package/dist/rules/literal-secret.ts +60 -6
- package/dist/schema/azuremonitor.gen.d.ts +354 -0
- package/dist/schema/azuremonitor.gen.d.ts.map +1 -0
- package/dist/schema/barchart.gen.d.ts +198 -0
- package/dist/schema/barchart.gen.d.ts.map +1 -0
- package/dist/schema/bargauge.gen.d.ts +97 -0
- package/dist/schema/bargauge.gen.d.ts.map +1 -0
- package/dist/schema/bigquery.gen.d.ts +93 -0
- package/dist/schema/bigquery.gen.d.ts.map +1 -0
- package/dist/schema/canvas.gen.d.ts +152 -0
- package/dist/schema/canvas.gen.d.ts.map +1 -0
- package/dist/schema/cloudwatch.gen.d.ts +394 -0
- package/dist/schema/cloudwatch.gen.d.ts.map +1 -0
- package/dist/schema/dashboard.gen.d.ts +196 -21
- package/dist/schema/dashboard.gen.d.ts.map +1 -1
- package/dist/schema/elasticsearch.gen.d.ts +444 -0
- package/dist/schema/elasticsearch.gen.d.ts.map +1 -0
- package/dist/schema/expr.gen.d.ts +606 -0
- package/dist/schema/expr.gen.d.ts.map +1 -0
- package/dist/schema/gauge.gen.d.ts.map +1 -1
- package/dist/schema/geomap.gen.d.ts +100 -0
- package/dist/schema/geomap.gen.d.ts.map +1 -0
- package/dist/schema/googlecloudmonitoring.gen.d.ts +312 -0
- package/dist/schema/googlecloudmonitoring.gen.d.ts.map +1 -0
- package/dist/schema/grafanapyroscope.gen.d.ts +60 -0
- package/dist/schema/grafanapyroscope.gen.d.ts.map +1 -0
- package/dist/schema/heatmap.gen.d.ts.map +1 -1
- package/dist/schema/histogram.gen.d.ts +132 -0
- package/dist/schema/histogram.gen.d.ts.map +1 -0
- package/dist/schema/index.d.ts +18 -0
- package/dist/schema/index.d.ts.map +1 -1
- package/dist/schema/logs.gen.d.ts +1 -0
- package/dist/schema/logs.gen.d.ts.map +1 -1
- package/dist/schema/loki.gen.d.ts.map +1 -1
- package/dist/schema/nodegraph.gen.d.ts +49 -0
- package/dist/schema/nodegraph.gen.d.ts.map +1 -0
- package/dist/schema/piechart.gen.d.ts +127 -0
- package/dist/schema/piechart.gen.d.ts.map +1 -0
- package/dist/schema/prometheus.gen.d.ts.map +1 -1
- package/dist/schema/stat.gen.d.ts.map +1 -1
- package/dist/schema/statetimeline.gen.d.ts +124 -0
- package/dist/schema/statetimeline.gen.d.ts.map +1 -0
- package/dist/schema/statushistory.gen.d.ts +114 -0
- package/dist/schema/statushistory.gen.d.ts.map +1 -0
- package/dist/schema/table.gen.d.ts +35 -3
- package/dist/schema/table.gen.d.ts.map +1 -1
- package/dist/schema/tempo.gen.d.ts.map +1 -1
- package/dist/schema/text.gen.d.ts.map +1 -1
- package/dist/schema/timeseries.gen.d.ts +5 -1
- package/dist/schema/timeseries.gen.d.ts.map +1 -1
- package/dist/schema/trend.gen.d.ts +180 -0
- package/dist/schema/trend.gen.d.ts.map +1 -0
- package/dist/schema/xychart.gen.d.ts +145 -0
- package/dist/schema/xychart.gen.d.ts.map +1 -0
- package/dist/schema-validate.d.ts +39 -4
- package/dist/schema-validate.d.ts.map +1 -1
- package/dist/serializer.d.ts +11 -3
- package/dist/serializer.d.ts.map +1 -1
- package/dist/skill-defs.d.ts.map +1 -1
- package/dist/skills/chant-grafana-alerting.md +49 -0
- package/dist/skills/chant-grafana-operations.md +108 -0
- package/dist/skills/chant-grafana-provisioning.md +3 -3
- package/dist/skills/chant-grafana.md +15 -8
- package/dist/spec/fetch-units-cli.d.ts +3 -0
- package/dist/spec/fetch-units-cli.d.ts.map +1 -0
- package/dist/spec/overlay.d.ts +43 -0
- package/dist/spec/overlay.d.ts.map +1 -0
- package/dist/spec/schemas.d.ts +21 -13
- package/dist/spec/schemas.d.ts.map +1 -1
- package/dist/spec/schemas.gen.d.ts +3 -0
- package/dist/spec/schemas.gen.d.ts.map +1 -0
- package/dist/spec/units.d.ts +35 -0
- package/dist/spec/units.d.ts.map +1 -0
- package/dist/spec/units.gen.d.ts +2 -0
- package/dist/spec/units.gen.d.ts.map +1 -0
- package/dist/transformations.d.ts +459 -0
- package/dist/transformations.d.ts.map +1 -0
- package/dist/util.d.ts +6 -0
- package/dist/util.d.ts.map +1 -1
- package/dist/validate-alerting.d.ts +65 -0
- package/dist/validate-alerting.d.ts.map +1 -0
- package/dist/validate-output.d.ts +62 -9
- package/dist/validate-output.d.ts.map +1 -1
- package/dist/validate.d.ts.map +1 -1
- package/dist/validation.d.ts +14 -0
- package/dist/validation.d.ts.map +1 -0
- package/dist/variables.d.ts +109 -7
- package/dist/variables.d.ts.map +1 -1
- package/package.json +12 -4
- package/src/actions/actions.test.ts +24 -0
- package/src/actions/grafana.ts +40 -0
- package/src/actions/index.ts +1 -0
- package/src/alerting-build.ts +376 -0
- package/src/alerting.e2e.test.ts +212 -0
- package/src/alerting.test.ts +272 -0
- package/src/alerting.ts +435 -0
- package/src/annotations.ts +84 -0
- package/src/api/apply.test.ts +256 -0
- package/src/api/apply.ts +394 -0
- package/src/api/bind.ts +58 -0
- package/src/api/client.ts +148 -0
- package/src/api/converge.ts +63 -0
- package/src/api/dashboards.ts +247 -0
- package/src/api/datasources.ts +33 -0
- package/src/api/fake-grafana-writes.ts +201 -0
- package/src/api/fake-grafana.ts +190 -0
- package/src/api/folders.ts +339 -0
- package/src/api/library-panels.ts +101 -0
- package/src/build.test.ts +351 -10
- package/src/build.ts +294 -55
- package/src/catalog.ts +104 -2
- package/src/codegen/docs.ts +50 -10
- package/src/codegen/generate.ts +27 -1
- package/src/codegen/schema-types.ts +16 -6
- package/src/composites/agent-dashboard.ts +6 -3
- package/src/composites/catalog.test.ts +2 -2
- package/src/composites/catalog.ts +82 -0
- package/src/composites/composites.test.ts +73 -9
- package/src/composites/index.ts +4 -2
- package/src/composites/queries.e2e.test.ts +374 -0
- package/src/composites/red-dashboard.ts +83 -12
- package/src/composites/shared.ts +14 -2
- package/src/composites/slo-alert-rules.ts +149 -0
- package/src/config.test.ts +61 -0
- package/src/config.ts +138 -0
- package/src/contact-point-secrets.ts +63 -0
- package/src/dashboard.ts +68 -9
- package/src/datasource-refs.test.ts +56 -0
- package/src/datasource-refs.ts +213 -0
- package/src/datasource-settings.test.ts +106 -0
- package/src/datasource-settings.ts +941 -0
- package/src/datasource.ts +123 -11
- package/src/deep-observe-hooks.ts +267 -0
- package/src/deep-observe.test.ts +311 -0
- package/src/deep-observe.ts +187 -0
- package/src/describe-resources.test.ts +271 -0
- package/src/describe-resources.ts +244 -0
- package/src/detect.ts +82 -5
- package/src/export-resources.test.ts +129 -0
- package/src/export-resources.ts +84 -0
- package/src/folder.ts +118 -0
- package/src/generated/lexicon-grafana.json +205 -0
- package/src/import/alerting-roundtrip.test.ts +161 -0
- package/src/import/alerting.ts +500 -0
- package/src/import/edits.ts +95 -0
- package/src/import/embedded.test.ts +45 -0
- package/src/import/embedded.ts +47 -0
- package/src/import/generated-types.e2e.test.ts +130 -0
- package/src/import/generator.test.ts +210 -0
- package/src/import/generator.ts +463 -0
- package/src/import/live-export.ts +264 -0
- package/src/import/mappings.ts +336 -0
- package/src/import/model.ts +117 -0
- package/src/import/normalize-alerting.ts +101 -0
- package/src/import/normalize.test.ts +117 -0
- package/src/import/normalize.ts +393 -0
- package/src/import/parser.test.ts +516 -0
- package/src/import/parser.ts +1387 -0
- package/src/import/report.ts +62 -0
- package/src/import/roundtrip.test.ts +563 -0
- package/src/import/testdata/fixtures.ts +137 -0
- package/src/import/v2.test.ts +292 -0
- package/src/import/v2.ts +804 -0
- package/src/import.e2e.test.ts +31 -84
- package/src/import.test.ts +9 -3
- package/src/index.ts +308 -14
- package/src/init-templates.test.ts +74 -0
- package/src/init-templates.ts +349 -0
- package/src/k8s.test.ts +98 -0
- package/src/k8s.ts +197 -0
- package/src/lint/audit-catalog.ts +68 -3
- package/src/lint/core-lint.test.ts +43 -0
- package/src/lint/post-synth/graf101.ts +3 -3
- package/src/lint/post-synth/graf102.ts +1 -1
- package/src/lint/post-synth/graf104.ts +3 -3
- package/src/lint/post-synth/graf106.ts +3 -3
- package/src/lint/post-synth/graf107.ts +1 -1
- package/src/lint/post-synth/graf108.ts +17 -0
- package/src/lint/post-synth/graf109.ts +17 -0
- package/src/lint/post-synth/graf110.ts +17 -0
- package/src/lint/post-synth/graf111.ts +17 -0
- package/src/lint/post-synth/graf112.ts +17 -0
- package/src/lint/post-synth/graf113.ts +17 -0
- package/src/lint/post-synth/graf114.ts +17 -0
- package/src/lint/post-synth/graf115.ts +17 -0
- package/src/lint/post-synth/grafana-helpers.ts +27 -10
- package/src/lint/post-synth/index.ts +16 -0
- package/src/lint/post-synth/post-synth.test.ts +333 -12
- package/src/lint/rules/literal-secret.ts +60 -6
- package/src/lint/rules/rules.test.ts +27 -0
- package/src/load-cost.test.ts +35 -0
- package/src/lsp/completions.test.ts +5 -0
- package/src/lsp/hover.test.ts +7 -0
- package/src/lsp/hover.ts +8 -1
- package/src/members.ts +68 -0
- package/src/observe.e2e.test.ts +255 -0
- package/src/op/activities/grafana-apply.e2e.test.ts +184 -0
- package/src/op/activities/grafana-apply.test.ts +243 -0
- package/src/op/activities/grafana-apply.ts +197 -0
- package/src/op/activities/index.ts +8 -0
- package/src/op/builders.test.ts +40 -0
- package/src/op/builders.ts +34 -0
- package/src/ownership.ts +122 -0
- package/src/panel-options.ts +66 -0
- package/src/panels.test.ts +53 -0
- package/src/panels.ts +148 -10
- package/src/pin.ts +69 -6
- package/src/plugin.test.ts +12 -2
- package/src/plugin.ts +75 -0
- package/src/promql-check.test.ts +108 -0
- package/src/promql-check.ts +193 -0
- package/src/query-models.ts +94 -0
- package/src/query.test.ts +166 -0
- package/src/query.ts +190 -20
- package/src/schema/azuremonitor.gen.ts +381 -0
- package/src/schema/barchart.gen.ts +221 -0
- package/src/schema/bargauge.gen.ts +111 -0
- package/src/schema/bigquery.gen.ts +110 -0
- package/src/schema/canvas.gen.ts +176 -0
- package/src/schema/cloudwatch.gen.ts +423 -0
- package/src/schema/dashboard.gen.ts +206 -22
- package/src/schema/elasticsearch.gen.ts +508 -0
- package/src/schema/expr.gen.ts +618 -0
- package/src/schema/gauge.gen.ts +2 -1
- package/src/schema/geomap.gen.ts +112 -0
- package/src/schema/googlecloudmonitoring.gen.ts +330 -0
- package/src/schema/grafanapyroscope.gen.ts +66 -0
- package/src/schema/heatmap.gen.ts +2 -1
- package/src/schema/histogram.gen.ts +151 -0
- package/src/schema/index.ts +18 -0
- package/src/schema/logs.gen.ts +3 -1
- package/src/schema/loki.gen.ts +2 -1
- package/src/schema/nodegraph.gen.ts +58 -0
- package/src/schema/piechart.gen.ts +146 -0
- package/src/schema/prometheus.gen.ts +2 -1
- package/src/schema/stat.gen.ts +2 -1
- package/src/schema/statetimeline.gen.ts +143 -0
- package/src/schema/statushistory.gen.ts +132 -0
- package/src/schema/table.gen.ts +41 -4
- package/src/schema/tempo.gen.ts +2 -1
- package/src/schema/text.gen.ts +2 -1
- package/src/schema/timeseries.gen.ts +7 -2
- package/src/schema/trend.gen.ts +208 -0
- package/src/schema/xychart.gen.ts +167 -0
- package/src/schema-overlay.test.ts +282 -0
- package/src/schema-validate.ts +199 -57
- package/src/schema.test.ts +4 -2
- package/src/serializer.test.ts +13 -1
- package/src/serializer.ts +11 -3
- package/src/skill-defs.ts +34 -0
- package/src/skills/chant-grafana-alerting.md +49 -0
- package/src/skills/chant-grafana-operations.md +108 -0
- package/src/skills/chant-grafana-provisioning.md +3 -3
- package/src/skills/chant-grafana.md +15 -8
- package/src/spec/fetch-cli.ts +3 -3
- package/src/spec/fetch-units-cli.ts +37 -0
- package/src/spec/overlay/canvas.overlay.json +142 -0
- package/src/spec/overlay/dashboard.overlay.json +378 -0
- package/src/spec/overlay/expr.overlay.json +14 -0
- package/src/spec/overlay/geomap.overlay.json +35 -0
- package/src/spec/overlay/logs.overlay.json +14 -0
- package/src/spec/overlay/nodegraph.overlay.json +31 -0
- package/src/spec/overlay/piechart.overlay.json +17 -0
- package/src/spec/overlay/table.overlay.json +103 -0
- package/src/spec/overlay/timeseries.overlay.json +21 -0
- package/src/spec/overlay/trend.overlay.json +17 -0
- package/src/spec/overlay/xychart.overlay.json +16 -0
- package/src/spec/overlay.ts +105 -0
- package/src/spec/schemas/azuremonitor.jsonschema.json +679 -0
- package/src/spec/schemas/barchart.jsonschema.json +419 -0
- package/src/spec/schemas/bargauge.jsonschema.json +224 -0
- package/src/spec/schemas/bigquery.jsonschema.json +290 -0
- package/src/spec/schemas/canvas.jsonschema.json +356 -0
- package/src/spec/schemas/cloudwatch.jsonschema.json +721 -0
- package/src/spec/schemas/dashboardv2.jsonschema.json +3387 -0
- package/src/spec/schemas/elasticsearch.jsonschema.json +1695 -0
- package/src/spec/schemas/expr.jsonschema.json +987 -0
- package/src/spec/schemas/geomap.jsonschema.json +220 -0
- package/src/spec/schemas/googlecloudmonitoring.jsonschema.json +488 -0
- package/src/spec/schemas/grafanapyroscope.jsonschema.json +93 -0
- package/src/spec/schemas/histogram.jsonschema.json +308 -0
- package/src/spec/schemas/nodegraph.jsonschema.json +77 -0
- package/src/spec/schemas/piechart.jsonschema.json +275 -0
- package/src/spec/schemas/statetimeline.jsonschema.json +324 -0
- package/src/spec/schemas/statushistory.jsonschema.json +292 -0
- package/src/spec/schemas/trend.jsonschema.json +449 -0
- package/src/spec/schemas/xychart.jsonschema.json +428 -0
- package/src/spec/schemas.gen.ts +40 -0
- package/src/spec/schemas.ts +30 -16
- package/src/spec/units.gen.ts +281 -0
- package/src/spec/units.ts +77 -0
- package/src/transformations.test.ts +65 -0
- package/src/transformations.ts +574 -0
- package/src/util.ts +8 -0
- package/src/validate-alerting.test.ts +255 -0
- package/src/validate-alerting.ts +430 -0
- package/src/validate-output.ts +427 -104
- package/src/validate.ts +28 -0
- package/src/validation.ts +27 -0
- package/src/variables.ts +120 -8
package/src/import.e2e.test.ts
CHANGED
|
@@ -1,24 +1,22 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* "A dashboard builds to JSON that Grafana imports without edits", against
|
|
3
|
-
* Grafana itself.
|
|
3
|
+
* Grafana itself, on every release in `GRAFANA_IMAGES` (12.4 and 13.2).
|
|
4
4
|
*
|
|
5
5
|
* Builds each example (getting-started, and dashboards-from-declarations,
|
|
6
6
|
* whose dashboards the RED, SLO and agent composites build), mounts its
|
|
7
7
|
* provisioning files and dashboards into a pinned `grafana/grafana`
|
|
8
|
-
* container, and asserts that
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
* import uses, under
|
|
8
|
+
* container, and asserts that Grafana provisioned every datasource and
|
|
9
|
+
* dashboard, and that each stored dashboard model is the built JSON, key
|
|
10
|
+
* for key, once the keys Grafana adds (`GRAFANA_INJECTED`: `id` and
|
|
11
|
+
* `version`) are taken out. It then imports the same JSON a second time
|
|
12
|
+
* through `POST /api/dashboards/db`, the path the UI's import uses, under
|
|
13
|
+
* another uid, and compares that stored model the same way.
|
|
13
14
|
*
|
|
14
15
|
* Skipped, with the reason in the test name, when Docker is not running.
|
|
15
|
-
* On demand: `npx vitest run --project e2e lexicons/grafana`.
|
|
16
|
+
* On demand: `npx vitest run --project e2e lexicons/grafana/src/import.e2e.test.ts`.
|
|
16
17
|
*/
|
|
17
|
-
import {
|
|
18
|
-
import { mkdirSync, mkdtempSync, rmSync, writeFileSync } from "node:fs";
|
|
19
|
-
import { tmpdir } from "node:os";
|
|
18
|
+
import { mkdirSync, writeFileSync } from "node:fs";
|
|
20
19
|
import { dirname, join } from "node:path";
|
|
21
|
-
import { fileURLToPath } from "node:url";
|
|
22
20
|
import { afterAll, describe, expect, it } from "vitest";
|
|
23
21
|
import { build } from "@intentius/chant/build";
|
|
24
22
|
import type { SerializerResult } from "@intentius/chant/serializer";
|
|
@@ -26,23 +24,12 @@ import type { Serializer } from "@intentius/chant/serializer";
|
|
|
26
24
|
import { otelSerializer } from "@intentius/chant-lexicon-otel/serializer";
|
|
27
25
|
import { prometheusSerializer } from "@intentius/chant-lexicon-prometheus/serializer";
|
|
28
26
|
import { grafanaSerializer } from "./serializer";
|
|
27
|
+
import { DockerScope, GRAFANA_IMAGES, dockerAvailable, waitFor } from "../test/e2e/containers";
|
|
28
|
+
import { withoutInjected } from "../test/e2e/stored-model";
|
|
29
29
|
|
|
30
|
-
|
|
31
|
-
export const GRAFANA_IMAGE = process.env.CHANT_GRAFANA_IMAGE ?? "grafana/grafana:12.4.11";
|
|
32
|
-
|
|
33
|
-
function available(cmd: string): boolean {
|
|
34
|
-
try {
|
|
35
|
-
execSync(cmd, { stdio: "ignore" });
|
|
36
|
-
return true;
|
|
37
|
-
} catch {
|
|
38
|
-
return false;
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
const hasDocker = available("docker info");
|
|
30
|
+
const hasDocker = dockerAvailable();
|
|
43
31
|
const skipReason = hasDocker ? "" : "Docker is not running";
|
|
44
|
-
const
|
|
45
|
-
const examples = join(dirname(dirname(fileURLToPath(import.meta.url))), "examples");
|
|
32
|
+
const examples = join(import.meta.dirname, "..", "examples");
|
|
46
33
|
|
|
47
34
|
/** Each example, and the serializers its build root needs. */
|
|
48
35
|
const EXAMPLES: Array<{ name: string; serializers: Serializer[] }> = [
|
|
@@ -50,98 +37,58 @@ const EXAMPLES: Array<{ name: string; serializers: Serializer[] }> = [
|
|
|
50
37
|
{ name: "dashboards-from-declarations", serializers: [otelSerializer, prometheusSerializer, grafanaSerializer] },
|
|
51
38
|
];
|
|
52
39
|
|
|
53
|
-
|
|
54
|
-
const deadline = Date.now() + timeoutMs;
|
|
55
|
-
let last: unknown;
|
|
56
|
-
while (Date.now() < deadline) {
|
|
57
|
-
try {
|
|
58
|
-
const v = await fn();
|
|
59
|
-
if (v !== undefined) return v;
|
|
60
|
-
} catch (err) {
|
|
61
|
-
last = err;
|
|
62
|
-
}
|
|
63
|
-
await new Promise((r) => setTimeout(r, 1000));
|
|
64
|
-
}
|
|
65
|
-
throw new Error(`timed out waiting for ${what}${last ? `: ${String(last)}` : ""}`);
|
|
66
|
-
}
|
|
40
|
+
const MATRIX = GRAFANA_IMAGES.flatMap((image) => EXAMPLES.map((e) => ({ ...e, image })));
|
|
67
41
|
|
|
68
|
-
describe.skipIf(!hasDocker).each(
|
|
69
|
-
const
|
|
70
|
-
const dir = mkdtempSync(join(tmpdir(), "chant-grafana-import-"));
|
|
42
|
+
describe.skipIf(!hasDocker).each(MATRIX)(`$image imports the $name dashboards without edits${skipReason ? ` (skipped: ${skipReason})` : ""}`, ({ name, serializers, image }) => {
|
|
43
|
+
const scope = new DockerScope(`grafana-import-${name}`);
|
|
71
44
|
|
|
72
|
-
afterAll(() =>
|
|
73
|
-
try {
|
|
74
|
-
execSync(`docker rm -f ${CONTAINER}`, { stdio: "ignore" });
|
|
75
|
-
} catch {
|
|
76
|
-
// already gone
|
|
77
|
-
}
|
|
78
|
-
rmSync(dir, { recursive: true, force: true });
|
|
79
|
-
});
|
|
45
|
+
afterAll(() => scope.cleanup());
|
|
80
46
|
|
|
81
|
-
it("provisions every datasource and dashboard, and accepts the JSON through the import API", { timeout: 300_000 }, async () => {
|
|
47
|
+
it("provisions every datasource and dashboard as built, and accepts the JSON through the import API", { timeout: 300_000 }, async () => {
|
|
82
48
|
const result = await build(join(examples, name, "src"), serializers);
|
|
83
49
|
expect(result.errors).toEqual([]);
|
|
84
50
|
const out = result.outputs.get("grafana") as SerializerResult;
|
|
51
|
+
const dir = scope.tempDir();
|
|
85
52
|
for (const [file, content] of Object.entries(out.files ?? {})) {
|
|
86
53
|
mkdirSync(dirname(join(dir, file)), { recursive: true });
|
|
87
54
|
writeFileSync(join(dir, file), content);
|
|
88
55
|
}
|
|
89
56
|
const index = JSON.parse(out.primary) as { dashboards: Array<{ uid: string; title: string; folder?: string; file: string }>; datasources: Array<{ uid: string; type: string; name: string }> };
|
|
90
57
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
"docker run -d",
|
|
94
|
-
`--name ${CONTAINER}`,
|
|
95
|
-
"-p 127.0.0.1::3000",
|
|
96
|
-
"-e GF_SECURITY_ADMIN_PASSWORD=admin",
|
|
97
|
-
"-e GF_ANALYTICS_REPORTING_ENABLED=false",
|
|
98
|
-
"-e GF_ANALYTICS_CHECK_FOR_UPDATES=false",
|
|
99
|
-
`-v ${join(dir, "provisioning")}:/etc/grafana/provisioning:ro`,
|
|
100
|
-
`-v ${join(dir, "dashboards")}:/var/lib/grafana/dashboards:ro`,
|
|
101
|
-
GRAFANA_IMAGE,
|
|
102
|
-
].join(" "),
|
|
103
|
-
{ stdio: "ignore" },
|
|
104
|
-
);
|
|
105
|
-
const port = execSync(`docker port ${CONTAINER} 3000/tcp`).toString().trim().split("\n")[0].split(":").pop();
|
|
106
|
-
const base = `http://127.0.0.1:${port}`;
|
|
107
|
-
const api = async (path: string, init?: RequestInit) => {
|
|
108
|
-
const res = await fetch(`${base}${path}`, { ...init, headers: { authorization: AUTH, "content-type": "application/json", ...(init?.headers ?? {}) } });
|
|
109
|
-
return { status: res.status, body: (await res.json()) as Record<string, unknown> & unknown[] };
|
|
110
|
-
};
|
|
111
|
-
|
|
112
|
-
await waitFor("Grafana to answer", async () => ((await fetch(`${base}/api/health`)).ok ? true : undefined));
|
|
58
|
+
const grafana = await scope.grafana({ image, provisioningDir: join(dir, "provisioning"), dashboardsDir: join(dir, "dashboards") });
|
|
59
|
+
const { api } = grafana;
|
|
113
60
|
|
|
114
61
|
// Datasources: every declared one, with the uid and type chant gave it.
|
|
115
62
|
const datasources = await waitFor("datasources", async () => {
|
|
116
63
|
const { status, body } = await api("/api/datasources");
|
|
117
|
-
return status === 200 && (body as unknown[]).length >= index.datasources.length ? (body as
|
|
64
|
+
return status === 200 && (body as unknown[]).length >= index.datasources.length ? (body as Array<{ uid: string; type: string; name: string }>) : undefined;
|
|
118
65
|
});
|
|
119
66
|
expect(datasources.map((d) => [d.uid, d.type, d.name]).sort()).toEqual(index.datasources.map((d) => [d.uid, d.type, d.name]).sort());
|
|
120
67
|
|
|
121
|
-
// Dashboards: provisioned, in their folder,
|
|
68
|
+
// Dashboards: provisioned, in their folder, and stored exactly as built.
|
|
122
69
|
for (const d of index.dashboards) {
|
|
123
70
|
const { body } = await waitFor(`dashboard ${d.uid}`, async () => {
|
|
124
71
|
const r = await api(`/api/dashboards/uid/${d.uid}`);
|
|
125
72
|
return r.status === 200 ? r : undefined;
|
|
126
73
|
});
|
|
127
74
|
const meta = body.meta as { provisioned: boolean; folderTitle?: string };
|
|
128
|
-
const stored = body.dashboard as
|
|
129
|
-
const built = JSON.parse(out.files![d.file]) as
|
|
75
|
+
const stored = body.dashboard as Record<string, unknown>;
|
|
76
|
+
const built = JSON.parse(out.files![d.file]) as Record<string, unknown>;
|
|
130
77
|
expect(meta.provisioned).toBe(true);
|
|
131
78
|
if (d.folder) expect(meta.folderTitle).toBe(d.folder);
|
|
132
|
-
expect(stored.
|
|
133
|
-
|
|
134
|
-
expect(
|
|
135
|
-
expect(stored.templating.list.length).toBe(built.templating.list.length);
|
|
79
|
+
expect(typeof stored.id, `${d.uid}: Grafana assigns the id`).toBe("number");
|
|
80
|
+
expect(stored.version, `${d.uid}: Grafana's first version`).toBe(1);
|
|
81
|
+
expect(withoutInjected(stored), `${image} stored ${d.uid} differently from the build`).toStrictEqual(built);
|
|
136
82
|
}
|
|
137
83
|
|
|
138
84
|
// The same JSON through the import API, under a new uid.
|
|
139
85
|
const first = index.dashboards[0];
|
|
140
|
-
const copy = { ...JSON.parse(out.files![first.file]), uid: `${first.uid}-api`, title: `${first.title} (API import)` };
|
|
86
|
+
const copy = { ...(JSON.parse(out.files![first.file]) as Record<string, unknown>), uid: `${first.uid}-api`, title: `${first.title} (API import)` };
|
|
141
87
|
const imported = await api("/api/dashboards/db", { method: "POST", body: JSON.stringify({ dashboard: copy, overwrite: false }) });
|
|
142
88
|
expect(imported.status).toBe(200);
|
|
143
89
|
expect(imported.body.status).toBe("success");
|
|
144
90
|
const back = await api(`/api/dashboards/uid/${first.uid}-api`);
|
|
145
|
-
expect(
|
|
91
|
+
expect(back.status).toBe(200);
|
|
92
|
+
expect(withoutInjected(back.body.dashboard as Record<string, unknown>), `${image} stored the API import differently from the JSON sent`).toStrictEqual(copy);
|
|
146
93
|
});
|
|
147
94
|
});
|
package/src/import.test.ts
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Builds every example and validates each dashboard against Grafana's
|
|
5
5
|
* dashboard schema at `GRAFANA_SCHEMA_PIN`, each panel's options and each
|
|
6
|
-
* query against their plugin's schema, and runs
|
|
6
|
+
* query against their plugin's schema, and runs the GRAF1xx checks over the
|
|
7
7
|
* output. `import.e2e.test.ts` does the same against a real Grafana when
|
|
8
8
|
* Docker is available.
|
|
9
9
|
*/
|
|
@@ -18,6 +18,7 @@ import { grafanaSerializer } from "./serializer";
|
|
|
18
18
|
import { validateDashboardSchema } from "./schema-validate";
|
|
19
19
|
import { validateGrafanaOutput } from "./validate-output";
|
|
20
20
|
import type { ProvisionedDatasource } from "./build";
|
|
21
|
+
import { ALERTING_FILE } from "./alerting-build";
|
|
21
22
|
|
|
22
23
|
const examplesDir = join(dirname(dirname(fileURLToPath(import.meta.url))), "examples");
|
|
23
24
|
const examples = readdirSync(examplesDir).filter((e) => {
|
|
@@ -34,12 +35,17 @@ describe.each(examples)("example %s", (example) => {
|
|
|
34
35
|
expect(result.errors).toEqual([]);
|
|
35
36
|
const out = result.outputs.get("grafana") as SerializerResult;
|
|
36
37
|
const dashboards = Object.entries(out.files ?? {}).filter(([f]) => f.startsWith("dashboards/"));
|
|
37
|
-
|
|
38
|
+
const alerting = out.files?.[ALERTING_FILE];
|
|
39
|
+
expect(dashboards.length + (alerting ? 1 : 0)).toBeGreaterThan(0);
|
|
38
40
|
for (const [file, text] of dashboards) {
|
|
39
41
|
expect({ file, problems: validateDashboardSchema(JSON.parse(text)) }).toEqual({ file, problems: [] });
|
|
40
42
|
}
|
|
41
43
|
const ds = load(out.files?.["provisioning/datasources/chant.yaml"] ?? "datasources: []") as { datasources: ProvisionedDatasource[] };
|
|
42
|
-
const issues = validateGrafanaOutput({
|
|
44
|
+
const issues = validateGrafanaOutput({
|
|
45
|
+
dashboards: dashboards.map(([source, t]) => ({ source, json: JSON.parse(t) })),
|
|
46
|
+
datasources: ds.datasources,
|
|
47
|
+
alerting: alerting ? [{ source: ALERTING_FILE, json: load(alerting) as Record<string, unknown> }] : [],
|
|
48
|
+
});
|
|
43
49
|
expect(issues).toEqual([]);
|
|
44
50
|
});
|
|
45
51
|
});
|
package/src/index.ts
CHANGED
|
@@ -8,8 +8,21 @@ export { grafanaSerializer } from "./serializer";
|
|
|
8
8
|
export {
|
|
9
9
|
Datasource,
|
|
10
10
|
DATASOURCE_TYPE,
|
|
11
|
+
ExternalDatasource,
|
|
12
|
+
EXTERNAL_DATASOURCE_TYPE,
|
|
11
13
|
BUILTIN_DATASOURCE_UIDS,
|
|
12
14
|
isDatasourceEntity,
|
|
15
|
+
isExternalDatasource,
|
|
16
|
+
isDatasourceDeclaration,
|
|
17
|
+
DatasourceProvisioning,
|
|
18
|
+
DATASOURCE_PROVISIONING_TYPE,
|
|
19
|
+
isDatasourceProvisioningEntity,
|
|
20
|
+
type DatasourceProvisioningProps,
|
|
21
|
+
type DatasourceProvisioningEntity,
|
|
22
|
+
type DeletedDatasource,
|
|
23
|
+
type ExternalDatasourceProps,
|
|
24
|
+
type ExternalDatasourceEntity,
|
|
25
|
+
type ExternalDatasourceConstructor,
|
|
13
26
|
type DatasourceProps,
|
|
14
27
|
type DatasourceEntity,
|
|
15
28
|
type DatasourceConstructor,
|
|
@@ -18,6 +31,64 @@ export {
|
|
|
18
31
|
type KnownDatasourceType,
|
|
19
32
|
} from "./datasource";
|
|
20
33
|
|
|
34
|
+
// Typed datasource settings (jsonData, secureJsonData keys) per plugin
|
|
35
|
+
export {
|
|
36
|
+
JSONDATA_LINKS,
|
|
37
|
+
TRACING_DATASOURCE_TYPES,
|
|
38
|
+
TRACE_TO_LOGS_DATASOURCE_TYPES,
|
|
39
|
+
TRACE_TO_METRICS_DATASOURCE_TYPES,
|
|
40
|
+
type JsonDataLink,
|
|
41
|
+
type LinkedDatasource,
|
|
42
|
+
type TracingDatasourceType,
|
|
43
|
+
type TraceToLogsDatasourceType,
|
|
44
|
+
type TraceToMetricsDatasourceType,
|
|
45
|
+
type TypedDatasourceType,
|
|
46
|
+
type DatasourceJsonData,
|
|
47
|
+
type DatasourceSecureJsonData,
|
|
48
|
+
type DatasourceJsonDataTypes,
|
|
49
|
+
type DatasourceSecureJsonKeys,
|
|
50
|
+
type CommonJsonData,
|
|
51
|
+
type HttpJsonData,
|
|
52
|
+
type HttpSecureJsonKey,
|
|
53
|
+
type PrometheusJsonData,
|
|
54
|
+
type ExemplarTraceIdDestination,
|
|
55
|
+
type LokiJsonData,
|
|
56
|
+
type DerivedFieldConfig,
|
|
57
|
+
type TempoJsonData,
|
|
58
|
+
type TraceToLogsTag,
|
|
59
|
+
type TraceToLogsOptions,
|
|
60
|
+
type TraceToLogsOptionsV2,
|
|
61
|
+
type TraceToMetricsOptions,
|
|
62
|
+
type TraceToProfilesOptions,
|
|
63
|
+
type ElasticsearchJsonData,
|
|
64
|
+
type ElasticsearchDataLink,
|
|
65
|
+
type ElasticsearchSecureJsonKey,
|
|
66
|
+
type AwsAuthJsonData,
|
|
67
|
+
type AwsAuthSecureJsonKey,
|
|
68
|
+
type CloudWatchJsonData,
|
|
69
|
+
type CloudWatchLogGroup,
|
|
70
|
+
type CloudWatchSecureJsonKey,
|
|
71
|
+
type AzureCloudName,
|
|
72
|
+
type AzureCredentials,
|
|
73
|
+
type AzureMonitorJsonData,
|
|
74
|
+
type AzureMonitorSecureJsonKey,
|
|
75
|
+
type GoogleAuthJsonData,
|
|
76
|
+
type GoogleAuthSecureJsonKey,
|
|
77
|
+
type CloudMonitoringJsonData,
|
|
78
|
+
type CloudMonitoringSecureJsonKey,
|
|
79
|
+
type BigQueryJsonData,
|
|
80
|
+
type BigQuerySecureJsonKey,
|
|
81
|
+
type PyroscopeJsonData,
|
|
82
|
+
type PyroscopeSecureJsonKey,
|
|
83
|
+
type SqlJsonData,
|
|
84
|
+
type PostgresJsonData,
|
|
85
|
+
type PostgresSecureJsonKey,
|
|
86
|
+
type MySQLJsonData,
|
|
87
|
+
type MySQLSecureJsonKey,
|
|
88
|
+
type MSSQLJsonData,
|
|
89
|
+
type MSSQLSecureJsonKey,
|
|
90
|
+
} from "./datasource-settings";
|
|
91
|
+
|
|
21
92
|
// Dashboards and provisioning
|
|
22
93
|
export {
|
|
23
94
|
Dashboard,
|
|
@@ -32,8 +103,106 @@ export {
|
|
|
32
103
|
type DashboardLinkInput,
|
|
33
104
|
type DashboardProviderProps,
|
|
34
105
|
type DashboardProviderEntity,
|
|
106
|
+
type DashboardEntityProps,
|
|
107
|
+
type DashboardProviderEntityProps,
|
|
35
108
|
} from "./dashboard";
|
|
36
109
|
|
|
110
|
+
// Folders and annotations
|
|
111
|
+
export { Folder, FOLDER_TYPE, isFolderEntity, folderLevels, type FolderProps, type FolderEntity } from "./folder";
|
|
112
|
+
export { annotationJson, ANNOTATION_REF_ID, type AnnotationInput } from "./annotations";
|
|
113
|
+
|
|
114
|
+
// Grafana-managed alerting
|
|
115
|
+
export {
|
|
116
|
+
AlertRuleGroup,
|
|
117
|
+
AlertRule,
|
|
118
|
+
AlertQuery,
|
|
119
|
+
ReduceExpression,
|
|
120
|
+
MathExpression,
|
|
121
|
+
ThresholdExpression,
|
|
122
|
+
ResampleExpression,
|
|
123
|
+
ClassicConditionsExpression,
|
|
124
|
+
SqlExpression,
|
|
125
|
+
ContactPoint,
|
|
126
|
+
NotificationPolicy,
|
|
127
|
+
MuteTiming,
|
|
128
|
+
NotificationTemplate,
|
|
129
|
+
ALERT_RULE_GROUP_TYPE,
|
|
130
|
+
ALERT_RULE_TYPE,
|
|
131
|
+
ALERT_QUERY_TYPE,
|
|
132
|
+
EXPRESSION_TYPE_PREFIX,
|
|
133
|
+
EXPRESSION_DATASOURCE_UID,
|
|
134
|
+
CONTACT_POINT_TYPE,
|
|
135
|
+
NOTIFICATION_POLICY_TYPE,
|
|
136
|
+
MUTE_TIMING_TYPE,
|
|
137
|
+
NOTIFICATION_TEMPLATE_TYPE,
|
|
138
|
+
isAlertRuleGroupEntity,
|
|
139
|
+
isAlertRuleEntity,
|
|
140
|
+
isAlertQueryEntity,
|
|
141
|
+
isExpressionEntity,
|
|
142
|
+
isContactPointEntity,
|
|
143
|
+
isNotificationPolicyEntity,
|
|
144
|
+
isMuteTimingEntity,
|
|
145
|
+
isNotificationTemplateEntity,
|
|
146
|
+
type AlertRuleGroupProps,
|
|
147
|
+
type AlertRuleGroupEntity,
|
|
148
|
+
type AlertRuleProps,
|
|
149
|
+
type AlertRuleEntity,
|
|
150
|
+
type AlertRuleData,
|
|
151
|
+
type AlertRuleNotificationSettings,
|
|
152
|
+
type AlertRuleRecord,
|
|
153
|
+
type AlertQueryProps,
|
|
154
|
+
type AlertQueryEntity,
|
|
155
|
+
type AlertDuration,
|
|
156
|
+
type RelativeTimeRange,
|
|
157
|
+
type ExpressionEntity,
|
|
158
|
+
type ExpressionKind,
|
|
159
|
+
type ReduceExpressionProps,
|
|
160
|
+
type MathExpressionProps,
|
|
161
|
+
type ThresholdExpressionProps,
|
|
162
|
+
type ResampleExpressionProps,
|
|
163
|
+
type ClassicConditionsExpressionProps,
|
|
164
|
+
type SqlExpressionProps,
|
|
165
|
+
type NoDataState,
|
|
166
|
+
type ExecErrState,
|
|
167
|
+
type ContactPointProps,
|
|
168
|
+
type ContactPointEntity,
|
|
169
|
+
type ContactPointReceiver,
|
|
170
|
+
type ContactPointIntegrationType,
|
|
171
|
+
type NotificationPolicyProps,
|
|
172
|
+
type NotificationPolicyEntity,
|
|
173
|
+
type PolicyRoute,
|
|
174
|
+
type ObjectMatcher,
|
|
175
|
+
type MuteTimingProps,
|
|
176
|
+
type MuteTimingEntity,
|
|
177
|
+
type NotificationTemplateProps,
|
|
178
|
+
type NotificationTemplateEntity,
|
|
179
|
+
} from "./alerting";
|
|
180
|
+
export {
|
|
181
|
+
buildAlerting,
|
|
182
|
+
alertingYaml,
|
|
183
|
+
alertRuleJson,
|
|
184
|
+
alertQueryJson,
|
|
185
|
+
ruleGroupJson,
|
|
186
|
+
contactPointJson,
|
|
187
|
+
notificationPolicyJson,
|
|
188
|
+
muteTimingJson,
|
|
189
|
+
notificationTemplateJson,
|
|
190
|
+
durationSeconds,
|
|
191
|
+
ALERTING_FILE,
|
|
192
|
+
ALERTING_FILE_KEYS,
|
|
193
|
+
DEFAULT_RELATIVE_TIME_RANGE,
|
|
194
|
+
DEFAULT_GROUP_INTERVAL,
|
|
195
|
+
type AlertingFile,
|
|
196
|
+
type AlertingIndex,
|
|
197
|
+
type ProvisionedRuleGroup,
|
|
198
|
+
type ProvisionedAlertRule,
|
|
199
|
+
type ProvisionedAlertQuery,
|
|
200
|
+
type ProvisionedContactPoint,
|
|
201
|
+
type ProvisionedMuteTiming,
|
|
202
|
+
type ProvisionedTemplate,
|
|
203
|
+
} from "./alerting-build";
|
|
204
|
+
export { CONTACT_POINT_SECRET_SETTINGS } from "./contact-point-secrets";
|
|
205
|
+
|
|
37
206
|
// Panels and rows, and the extension point for other panel plugins
|
|
38
207
|
export {
|
|
39
208
|
TimeSeriesPanel,
|
|
@@ -44,6 +213,19 @@ export {
|
|
|
44
213
|
TracesPanel,
|
|
45
214
|
HeatmapPanel,
|
|
46
215
|
TextPanel,
|
|
216
|
+
BarChartPanel,
|
|
217
|
+
BarGaugePanel,
|
|
218
|
+
PieChartPanel,
|
|
219
|
+
StateTimelinePanel,
|
|
220
|
+
StatusHistoryPanel,
|
|
221
|
+
HistogramPanel,
|
|
222
|
+
NodeGraphPanel,
|
|
223
|
+
XYChartPanel,
|
|
224
|
+
TrendPanel,
|
|
225
|
+
CanvasPanel,
|
|
226
|
+
GeomapPanel,
|
|
227
|
+
FlameGraphPanel,
|
|
228
|
+
AlertListPanel,
|
|
47
229
|
Row,
|
|
48
230
|
definePanel,
|
|
49
231
|
registeredPanels,
|
|
@@ -67,6 +249,15 @@ export {
|
|
|
67
249
|
PromQuery,
|
|
68
250
|
TempoQuery,
|
|
69
251
|
LokiQuery,
|
|
252
|
+
ElasticsearchQuery,
|
|
253
|
+
CloudWatchQuery,
|
|
254
|
+
AzureMonitorQuery,
|
|
255
|
+
CloudMonitoringQuery,
|
|
256
|
+
BigQueryQuery,
|
|
257
|
+
PyroscopeQuery,
|
|
258
|
+
PostgresQuery,
|
|
259
|
+
MySQLQuery,
|
|
260
|
+
MSSQLQuery,
|
|
70
261
|
defineQuery,
|
|
71
262
|
registeredQueries,
|
|
72
263
|
queryDefinitionFor,
|
|
@@ -74,6 +265,8 @@ export {
|
|
|
74
265
|
QUERY_TYPE_PREFIX,
|
|
75
266
|
type DatasourceInput,
|
|
76
267
|
type QueryModel,
|
|
268
|
+
type Loosen,
|
|
269
|
+
type MergedModel,
|
|
77
270
|
type QueryProps,
|
|
78
271
|
type QueryDefinition,
|
|
79
272
|
type QueryEntity,
|
|
@@ -81,8 +274,30 @@ export {
|
|
|
81
274
|
type PromQueryEntity,
|
|
82
275
|
type TempoQueryEntity,
|
|
83
276
|
type LokiQueryEntity,
|
|
277
|
+
type ElasticsearchQueryEntity,
|
|
278
|
+
type CloudWatchQueryEntity,
|
|
279
|
+
type AzureMonitorQueryEntity,
|
|
280
|
+
type CloudMonitoringQueryEntity,
|
|
281
|
+
type BigQueryQueryEntity,
|
|
282
|
+
type PyroscopeQueryEntity,
|
|
283
|
+
type PostgresQueryEntity,
|
|
284
|
+
type MySQLQueryEntity,
|
|
285
|
+
type MSSQLQueryEntity,
|
|
84
286
|
} from "./query";
|
|
85
287
|
|
|
288
|
+
// Hand-written query models for datasources with no schema
|
|
289
|
+
export type {
|
|
290
|
+
SqlQueryModel,
|
|
291
|
+
SqlBuilderQuery,
|
|
292
|
+
SqlQueryFormat,
|
|
293
|
+
SqlExpressionType,
|
|
294
|
+
SqlProperty,
|
|
295
|
+
SqlFunctionExpression,
|
|
296
|
+
SqlFunctionParameterExpression,
|
|
297
|
+
SqlGroupByExpression,
|
|
298
|
+
SqlPropertyExpression,
|
|
299
|
+
} from "./query-models";
|
|
300
|
+
|
|
86
301
|
// Variables
|
|
87
302
|
export {
|
|
88
303
|
QueryVariable,
|
|
@@ -107,14 +322,50 @@ export {
|
|
|
107
322
|
type DatasourceVariableProps,
|
|
108
323
|
type ConstantVariableProps,
|
|
109
324
|
type TextboxVariableProps,
|
|
325
|
+
AdhocVariable,
|
|
326
|
+
GroupByVariable,
|
|
327
|
+
SwitchVariable,
|
|
328
|
+
MULTI_VALUE_KINDS,
|
|
329
|
+
type AdhocVariableProps,
|
|
330
|
+
type GroupByVariableProps,
|
|
331
|
+
type SwitchVariableProps,
|
|
332
|
+
type AdhocFilter,
|
|
333
|
+
type VariableKeyOption,
|
|
334
|
+
type VariableQueryObject,
|
|
335
|
+
type PrometheusVariableQuery,
|
|
110
336
|
} from "./variables";
|
|
111
337
|
|
|
112
338
|
// The generated schema types and their pin
|
|
113
339
|
export * as schema from "./schema";
|
|
114
340
|
export { DASHBOARD_SCHEMA_VERSION } from "./schema";
|
|
115
|
-
export {
|
|
341
|
+
export {
|
|
342
|
+
GRAFANA_SCHEMA_PIN,
|
|
343
|
+
SCHEMA_NAMES,
|
|
344
|
+
IMPORT_ONLY_SCHEMA_NAMES,
|
|
345
|
+
VENDORED_SCHEMA_NAMES,
|
|
346
|
+
type GrafanaSchemaPin,
|
|
347
|
+
type SchemaName,
|
|
348
|
+
type ImportOnlySchemaName,
|
|
349
|
+
type VendoredSchemaName,
|
|
350
|
+
} from "./pin";
|
|
351
|
+
// Hand-written options for the built-in panels with no schema
|
|
352
|
+
export type { AlertListOptions, AlertListSortOrder, AlertListStateFilter, FlameGraphOptions } from "./panel-options";
|
|
116
353
|
|
|
117
|
-
//
|
|
354
|
+
// Panel transformations, typed per transformer (Grafana v13.2.2)
|
|
355
|
+
export {
|
|
356
|
+
transformation,
|
|
357
|
+
customTransformation,
|
|
358
|
+
TRANSFORMATION_IDS,
|
|
359
|
+
type Transformation,
|
|
360
|
+
type KnownTransformation,
|
|
361
|
+
type CustomTransformation,
|
|
362
|
+
type TransformationCommon,
|
|
363
|
+
type TransformationId,
|
|
364
|
+
type TransformationOptionsById,
|
|
365
|
+
type ReducerId,
|
|
366
|
+
} from "./transformations";
|
|
367
|
+
|
|
368
|
+
// Plain-data API: render and detect without a build
|
|
118
369
|
export {
|
|
119
370
|
buildGrafana,
|
|
120
371
|
grafanaFiles,
|
|
@@ -124,10 +375,13 @@ export {
|
|
|
124
375
|
panelsJson,
|
|
125
376
|
targetJson,
|
|
126
377
|
variableModel,
|
|
378
|
+
customVariableOptions,
|
|
127
379
|
datasourceRef,
|
|
128
380
|
provisionedDatasource,
|
|
381
|
+
externalDatasourceRecord,
|
|
129
382
|
provisionedProvider,
|
|
130
383
|
datasourcesYaml,
|
|
384
|
+
datasourceFileSettings,
|
|
131
385
|
dashboardProvidersYaml,
|
|
132
386
|
GRID_COLUMNS,
|
|
133
387
|
DATASOURCES_FILE,
|
|
@@ -137,30 +391,36 @@ export {
|
|
|
137
391
|
type BuiltDashboard,
|
|
138
392
|
type GrafanaIndex,
|
|
139
393
|
type ProvisionedDatasource,
|
|
394
|
+
type ExternalDatasourceRecord,
|
|
140
395
|
type ProvisionedProvider,
|
|
396
|
+
type DatasourceFileSettings,
|
|
141
397
|
type DashboardJson,
|
|
142
398
|
type PanelJson,
|
|
143
399
|
type RowPanelJson,
|
|
144
400
|
type VariableModel,
|
|
145
401
|
type DataSourceRef,
|
|
146
402
|
} from "./build";
|
|
403
|
+
// The checks as plain functions (validateGrafanaOutput, validateDashboardSchema)
|
|
404
|
+
// are on the `@intentius/chant-lexicon-grafana/validation` subpath (#2958), so
|
|
405
|
+
// declaring dashboards does not load them.
|
|
147
406
|
export {
|
|
148
|
-
|
|
149
|
-
issuesFor,
|
|
407
|
+
datasourceUses,
|
|
150
408
|
variableReferences,
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
type
|
|
154
|
-
type
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
export {
|
|
159
|
-
|
|
160
|
-
|
|
409
|
+
resolveDatasourceRef,
|
|
410
|
+
knownDatasources,
|
|
411
|
+
type DatasourceUse,
|
|
412
|
+
type ResolvedDatasource,
|
|
413
|
+
type KnownDatasource,
|
|
414
|
+
type DatasourceRefJson,
|
|
415
|
+
} from "./datasource-refs";
|
|
416
|
+
export { looksLikeDashboard, looksLikeDatasourceProvisioning, looksLikeDashboardProvisioning, looksLikeAlertingProvisioning } from "./detect";
|
|
417
|
+
export { slugUid, isValidUid, UID_PATTERN, type DeepPartial, type PropsOf } from "./util";
|
|
418
|
+
|
|
419
|
+
// Composites: dashboards built from a spanmetrics connector, an Slo and the GenAI preset, and an Slo's burn-rate alerts as Grafana rules
|
|
161
420
|
export {
|
|
162
421
|
RedDashboard,
|
|
163
422
|
redQueries,
|
|
423
|
+
RED_DEFAULT_SPAN_KINDS,
|
|
164
424
|
SloDashboard,
|
|
165
425
|
sloQueries,
|
|
166
426
|
AgentDashboard,
|
|
@@ -168,6 +428,7 @@ export {
|
|
|
168
428
|
type RedDashboardProps,
|
|
169
429
|
type RedDashboardMembers,
|
|
170
430
|
type RedDashboardInstance,
|
|
431
|
+
type SpanKind,
|
|
171
432
|
type SloDashboardProps,
|
|
172
433
|
type SloDashboardMembers,
|
|
173
434
|
type SloDashboardInstance,
|
|
@@ -175,4 +436,37 @@ export {
|
|
|
175
436
|
type AgentDashboardMembers,
|
|
176
437
|
type AgentDashboardInstance,
|
|
177
438
|
type DashboardOptions,
|
|
439
|
+
SloAlertRules,
|
|
440
|
+
sloAlertQueries,
|
|
441
|
+
type SloAlertRulesProps,
|
|
442
|
+
type SloAlertRulesMembers,
|
|
443
|
+
type SloAlertRulesInstance,
|
|
178
444
|
} from "./composites";
|
|
445
|
+
|
|
446
|
+
// Config namespace (#2946): `grafana.profiles.<env>` in chant.config.ts, the
|
|
447
|
+
// Grafana each environment is observed in and exported from.
|
|
448
|
+
export { grafanaConfigSchema, resolveGrafanaTarget } from "./config";
|
|
449
|
+
export type { GrafanaConfig, GrafanaProfile } from "./config";
|
|
450
|
+
|
|
451
|
+
// Ownership (#2946): chant's marker on a dashboard.grafana.app resource.
|
|
452
|
+
export {
|
|
453
|
+
GRAFANA_OWNERSHIP_KEYS,
|
|
454
|
+
DEFAULT_PROVIDER_NAME,
|
|
455
|
+
grafanaOwnershipLabels,
|
|
456
|
+
dashboardOwnership,
|
|
457
|
+
} from "./ownership";
|
|
458
|
+
|
|
459
|
+
// The HTTP client observe and export share, for the API applier (#2948).
|
|
460
|
+
export { GrafanaClient, GrafanaApiError, grafanaHttp, namespaceOf, statusVerdict } from "./api/client";
|
|
461
|
+
export type { GrafanaAuth, GrafanaHttp, GrafanaResponse, GrafanaTarget, StatusVerdict } from "./api/client";
|
|
462
|
+
export { bindGrafana, classifyGrafanaFailure, GrafanaBindingError } from "./api/bind";
|
|
463
|
+
|
|
464
|
+
// The API applier (#2948): the typed Op step, and the pieces an embedding
|
|
465
|
+
// caller composes (the activity itself is `./op/activities`).
|
|
466
|
+
export { grafanaApply } from "./op/builders";
|
|
467
|
+
export { applyGrafana, planFromDashboards, GRAFANA_APPLY_KINDS } from "./api/apply";
|
|
468
|
+
export type { GrafanaApplyPlan, GrafanaApplyOutcome, DashboardPlan, BuiltDashboardInput } from "./api/apply";
|
|
469
|
+
export { folderUidFor, foldersForDashboards, resolveFolders, liveFolderPath, type FolderPlan, type ResolvedFolders } from "./api/folders";
|
|
470
|
+
|
|
471
|
+
// The Grafana RBAC actions a service account needs to observe, apply and prune.
|
|
472
|
+
export { GrafanaActions, grafanaActionsFor, type GrafanaAccessLevel } from "./actions/index";
|