* Alerting: Display change message next to the rule version when exists
* Alerting: Update version history tests for message field
Updates test mocks and assertions to include message fields in version
history data. Adds three message examples to the mock handler and updates
test expectations to verify the Notes column displays correctly when
messages are present or absent.
---------
Co-authored-by: Konrad Lalik <konradlalik@gmail.com>
* feat(pyroscope): Exemplar support for series queries
use enum flag, add exemplar flag to explore
disable exemplars on explore as well
tests
feature toggle
fixing tests
* resolve conflicts
* lint
* Split best practices section
* Write Examples and Guides docs
* Move recording rule recommendations
* docs(alerting): new best practices guide
* fix vale errors
* Detail meaning of alert `escalation`
* Include the recovery threshold option
* Include lower severity channels for infrastructure alerts
* Remove timing options
* minor intro edits
* Rename heading to avoid gerunds
* Sparkline: Restore to a function component
* fix whitespace lint issue
* swap from clipPath to mask to help Safari
* Gauge: Fix SVG issues in Safari
* more steps in the right direction
* don't set filters which don't exist
* fix a couple other text and baseline stuff
* fix tests after changes
* clean up effects as follow-up to other PR
* fix issue with threshold bars, and also simplify non-gradient case
* Alerting: Update RuleGroupConfig definitions with missing fields
This update adds previously missing fields to the `RuleGroupConfig` structs to
ensure compatibility with external Prometheus-like rulers.
Includes:
- `labels`: per https://github.com/prometheus/prometheus/pull/11474
- `remote_write`: per https://github
.com/grafana/mimir/blob/56f33fed6254fee5a53bde1eab36c604863e3d5f/pkg/mimirtool/rules/rwrulefmt/rulefmt.go#L16
Note: This does not add full support in Grafana; it only allows these fields to
pass through the alerting proxy without causing unmarshal errors when using
external rulers.
* Update OpenAPI spec
* Secrets: changes to allow a 3rd party keeper / secret references
* fix test
* make gofmt
* lint
* fix tests
* assign aws secrets manager to @grafana/grafana-operator-experience-squad
* rename Keeper.Reference to Keeper.RetrieveReference
* rename ModelSecretsManager to ModelAWSSecretsManager
* validator: ensure that only one of keeper.Spec.Aws.AccessKey or keeper.Spec.Aws.AssumeRole are set
* move secrets manager dep / go mod tidy
* move secrets manager dep
* keeper validator: move 3rd party secret stores validation to their own functions
* add github.com/aws/aws-sdk-go-v2/service/secretsmanager pkg/extensions/enterprise_imports
* make update-workspace
* undo go.mod changes in /apps
* make update-workspace
* fix test
* add github.com/aws/aws-sdk-go-v2/service/secretsmanager to enterprise_imports
* make update-workspace
* gcworker: handle refs
* make update-workspace
* create toggle: FeatureStageExperimental
* allow features.IsEnabled for now
* format
* Plugins: Implement bug fix for loki label selectors w/ variable interpolation
* Chore: Add test to ensure result is interpolated
---------
Co-authored-by: Zoltán Bedi <zoltan.bedi@gmail.com>
* dashboard library check added
* community dashboard section tests in progress
* tests added
* translations added
* pagination removed
* total pages removed
* test updated. pagination removed
* filters applied
* tracking event removed to be created in another pr
* slug added so url is correclty generated
* ui fix
* improvements after review
* improvements after review
* more tests added. new logic created
* fix
* changes applied
* tests removed. pattern updated
* preset of 6 elements applied
* Improve code comments and adjust variable name based on PR feedback
* Fix unit test and add extra case for regex pattern
* Fix interaction event, we were missing contentKind on BasicProvisioned flow and datasources types were not being send
---------
Co-authored-by: nmarrs <nathanielmarrs@gmail.com>
Co-authored-by: alexandra vargas <alexa1866@gmail.com>
* Transformers: Add smoothing transformer
Added a smoothing transformer to help clean up noisy time series data.
It uses the ASAP algorithm to pick the most important data points while
keeping the overall shape and trends intact.
The transformer always keeps the first and last points so you get the
complete time range. I also added a test for it.
* Change category
Change category from Reformat to CalculateNewFields
* Remove first/last point preservation
* Fix operator recreation
* Simplify ASAP code
Include performance optimization as well
* Refactor interpolateFromSmoothedCurve
Break function into smaller focused functions and lift functions to the
top level
* Add isApplicable Check
Make sure the transformer is applicable for timeseries data
* Add tests for isApplicable check
* UI/UX improvements: Display effective resolution when limited by data points
Show "Effective: X" indicator when resolution is capped by the 2x data
points multiplier. Includes tooltip explaining the limit.
Memoizes calculation to prevent unnecessary recalculation on re-renders.
Example: With 72 data points and resolution set to 150, displays
"Effective: 144" since the limit is 72 x 2 = 144.
Plus added tests
* Improve discoverability by adding tags
* Preserve Original Data
Let's preserve original data as well, makes the UX so much better.
Changed from appending (smoothed) to frame names to use Smoothed frame name. This should match the pattern used by other transformers (e.g,. regression)
Updated tests accordingly
Updated tooltip note
* Add asap tests
Basic functionality:
* returns valid DataPoint objects
* Maintain x-axis ordering
Edge cases:
* Empty array
* single data point
* filter NaN values
* all NaN values
* sort unsorted data
* negative values
* Update dark and light images
* Clear state cache
* Add feature toggle
* Conditionally add new transformation to the registry
* chore: update and regenerate feature toggles
* chore: update yarn.lock
* chore: fix transformers and imports
* add support for skip TLS verify
* extract constructor for ExternalAMcfg and tests
* extract constructor for AlertmanagerConfig and tests
* add support for client cert auth
* chore(gdev-dashboard): minimal repro of escalation #19939 bug report
* fix(canvas): add branching logic to handle field mapping to icons case
* test(canvas): validate integration of canvas icon mappings
* refactor(resource-dimension): defensive against JS `undefined` in paths
* set panel level ds when converting from v2 to v1
* remove comment
* lint
* always set ds in sqr
* improve
* Apply suggestions from code review
Co-authored-by: Ivan Ortega Alba <ivanortegaalba@gmail.com>
---------
Co-authored-by: Ivan Ortega Alba <ivanortegaalba@gmail.com>
* Prometheus Dashboards: Use __rate_interval #110370 fix(prometheus): use in stats dashboard
* Added required changes to F:\grafana\public\app\plugins\datasource\prometheus\dashboards\prometheus_2_stats.json file
* removed empty line
* removed all steps
* OpenTSDB: Migrate metadata queries to data source backend
* OpenTSDB: Migrate annotations to the data source backend
* return errors for failed unmarshal
* remove trailing / from metadata requests
* remove console logs
* feat: add lock structure into bleve index files
* fix: another approach
* fix: new check
* fix: build in memory if index file already open
* fix: update workspace
* fix: add test
* refactor: update func signature
* fix: address comments
* fix: make const
* Suggestions: Add intermediate state to avoid unexpected saved states
* cleanup
* update and add e2es to confirm behavior
* fix some of the change dispatch
* codeowners
* fix js error that this exposed
* Apply suggestion from @fastfrwrd
* fix warning for VizRepeater styles
* Gauge: Update test dashboard to round two of the segment panels to whole numbers
* Gauge: E2E tests
* add test for sparklines
* Gauge: Change inner glow to be friendlier to our a11y tests
* remove unused CODEOWNER declaration
* expose text mode so that old displayName usage is somewhat preserved
* update migrations to use the value_and_text mode if displayName has a non-empty value
* more test cases
* update unit tests for fixture updates
* The builder query no longer runs if code mode query is empty. Remove checks for query being empty to run raw query.
* missed save
* prettier?
* Update public/app/plugins/datasource/elasticsearch/components/QueryEditor/BucketAggregationsEditor/state/reducer.ts
Co-authored-by: Andreas Christou <andreas.christou@grafana.com>
---------
Co-authored-by: Andreas Christou <andreas.christou@grafana.com>
* Clear selection on entering edit mode. Added test to verify selection is cleared when editing a panel.
* Update comment
---------
Co-authored-by: Haris Rozajac <58232930+harisrozajac@users.noreply.github.com>
* Add helper function to format numeric values in alert rule history
* Use formatting function in LogRecordViewer
* Refactor numerical formatting logic
* Handle edge cases when counting decimal places
* Cleanup tests and numberFormatter code
* V2: Panel datasource is defined only for mixed ds
* if getDatasourceFromQueryRunner only returns ds.type, resolve to full ds ref throgh ds service
---------
Co-authored-by: Haris Rozajac <haris.rozajac12@gmail.com>
* Dashboard: Add test case for BOM characters in link URLs
This test demonstrates the issue where BOM (Byte Order Mark) characters
in dashboard link URLs cause CUE validation errors during v1 to v2
conversion ('illegal byte order mark').
The test input contains BOMs in various URL locations:
- Dashboard links
- Panel data links
- Field config override links
- Options dataLinks
- Field config default links
* Dashboard: Strip BOM characters from URLs during v1 to v2 conversion
BOM (Byte Order Mark) characters in dashboard link URLs cause CUE
validation errors ('illegal byte order mark') when opening v2 dashboards.
This fix strips BOMs from all URL fields during conversion:
- Dashboard links
- Panel data links
- Field config override links
- Options dataLinks
- Field config default links
The stripBOM helper recursively processes nested structures to ensure
all string values have BOMs removed.
* Dashboard: Strip BOM characters in frontend v2 conversion
Add stripBOMs parameter to sortedDeepCloneWithoutNulls utility to remove
Byte Order Mark (U+FEFF) characters from all strings when serializing
dashboards to v2 format.
This prevents CUE validation errors ('illegal byte order mark') that occur
when BOMs are present in any string field. BOMs can be introduced through
copy/paste from certain editors or text sources.
Applied at the final serialization step so it catches BOMs from:
- Existing v1 dashboards being converted
- New data entered during dashboard editing
"description":"### Versions running\nShows the versions reported by each running pod.\n\nThe rollout will fail if any pod is not running the expected version.\n\nPods in green are running the expected version, while pods running other versions are shown in orange.\n\n",
"fieldConfig":{
"defaults":{
@@ -185,6 +188,9 @@
"type":"barchart"
},
{
"datasource":{
"uid":"$datasource"
},
"description":"### Deployment rollout progress\nShows the number of pods for each `Deployment` that match the desired configuration, as a proportion of the desired number of pods.\n\nThe rollout will fail if insufficient pods match the desired configuration for any `Deployment`.\n\nPods in green match the desired configuration, while pods that do not match the desired configuration are shown in orange.\n\n",
"fieldConfig":{
"defaults":{
@@ -286,6 +292,9 @@
"type":"barchart"
},
{
"datasource":{
"uid":"$datasource"
},
"description":"### StatefulSet rollout progress\nShows the number of pods for each `StatefulSet` that match the desired configuration, as a proportion of the desired number of pods.\n\nThe rollout will fail if insufficient pods match the desired configuration for any `StatefulSet`.\n\nPods in green match the desired configuration, while pods that do not match the desired configuration are shown in orange.\n\n",
"fieldConfig":{
"defaults":{
@@ -399,6 +408,9 @@
"type":"row"
},
{
"datasource":{
"uid":"$datasource"
},
"description":"### Aggregator lag\nShows the consumption lag of each aggregator pod.\n\nThis panel may show no data if aggregators are not deployed to this cell.\n\nThe rollout will fail if any pod's consumption lag is both:\n* greater than 30s (red area on graph), and\n* trending upwards compared to 1 minute earlier\n\n",
"fieldConfig":{
"defaults":{
@@ -468,6 +480,9 @@
"type":"timeseries"
},
{
"datasource":{
"uid":"$datasource"
},
"description":"### Unhealthy Deployment replicas\nShows the number of unavailable pods for each `Deployment`.\n\nThe rollout will fail if any `Deployment` has an unavailable pod.\n\nBoth this panel and the rollout check ignore any `Deployment`s that require spot nodes, as these are expected to be unavailable from time to time.\n\n`Deployment`s shown in green do not have any unavailable pods, while `Deployment`s shown in orange have one or more unavailable pods.\n\n",
"fieldConfig":{
"defaults":{
@@ -569,6 +584,9 @@
"type":"barchart"
},
{
"datasource":{
"uid":"$datasource"
},
"description":"### Unhealthy StatefulSet replicas\nShows the number of pods for each `StatefulSet` that are not ready.\n\nThe rollout will fail if any `StatefulSet` has fewer ready pods than requested.\n\nBoth this panel and the rollout check ignore any `StatefulSets`s that require spot nodes, as these are expected to be unavailable from time to time.\n\n`StatefulSets`s shown in green do not have any pods that are not ready, while `StatefulSet`s shown in orange have one or more pods that are not ready.\n\n",
"description":"### Versions running\nShows the versions reported by each running pod.\n\nThe rollout will fail if any pod is not running the expected version.\n\nPods in green are running the expected version, while pods running other versions are shown in orange.\n\n",
"fieldConfig":{
"defaults":{
@@ -185,6 +188,9 @@
"type":"barchart"
},
{
"datasource":{
"uid":"$datasource"
},
"description":"### Deployment rollout progress\nShows the number of pods for each `Deployment` that match the desired configuration, as a proportion of the desired number of pods.\n\nThe rollout will fail if insufficient pods match the desired configuration for any `Deployment`.\n\nPods in green match the desired configuration, while pods that do not match the desired configuration are shown in orange.\n\n",
"fieldConfig":{
"defaults":{
@@ -286,6 +292,9 @@
"type":"barchart"
},
{
"datasource":{
"uid":"$datasource"
},
"description":"### StatefulSet rollout progress\nShows the number of pods for each `StatefulSet` that match the desired configuration, as a proportion of the desired number of pods.\n\nThe rollout will fail if insufficient pods match the desired configuration for any `StatefulSet`.\n\nPods in green match the desired configuration, while pods that do not match the desired configuration are shown in orange.\n\n",
"fieldConfig":{
"defaults":{
@@ -399,6 +408,9 @@
"type":"row"
},
{
"datasource":{
"uid":"$datasource"
},
"description":"### Aggregator lag\nShows the consumption lag of each aggregator pod.\n\nThis panel may show no data if aggregators are not deployed to this cell.\n\nThe rollout will fail if any pod's consumption lag is both:\n* greater than 30s (red area on graph), and\n* trending upwards compared to 1 minute earlier\n\n",
"fieldConfig":{
"defaults":{
@@ -468,6 +480,9 @@
"type":"timeseries"
},
{
"datasource":{
"uid":"$datasource"
},
"description":"### Unhealthy Deployment replicas\nShows the number of unavailable pods for each `Deployment`.\n\nThe rollout will fail if any `Deployment` has an unavailable pod.\n\nBoth this panel and the rollout check ignore any `Deployment`s that require spot nodes, as these are expected to be unavailable from time to time.\n\n`Deployment`s shown in green do not have any unavailable pods, while `Deployment`s shown in orange have one or more unavailable pods.\n\n",
"fieldConfig":{
"defaults":{
@@ -569,6 +584,9 @@
"type":"barchart"
},
{
"datasource":{
"uid":"$datasource"
},
"description":"### Unhealthy StatefulSet replicas\nShows the number of pods for each `StatefulSet` that are not ready.\n\nThe rollout will fail if any `StatefulSet` has fewer ready pods than requested.\n\nBoth this panel and the rollout check ignore any `StatefulSets`s that require spot nodes, as these are expected to be unavailable from time to time.\n\n`StatefulSets`s shown in green do not have any pods that are not ready, while `StatefulSet`s shown in orange have one or more pods that are not ready.\n\n",
"description":"Tests basic migration with default style pattern (/.*/) containing thresholds and colors. Should convert styles to fieldConfig.defaults with threshold steps.",
"gridPos":{
"h":3,
@@ -57,6 +61,10 @@
"type":"table"
},
{
"datasource":{
"type":"prometheus",
"uid":"default-ds-uid"
},
"description":"Tests comprehensive migration including: default style with thresholds/colors/unit/decimals/align/colorMode, column overrides with exact name and regex patterns, date formatting, hidden columns, and links with tooltips.",
"gridPos":{
"h":3,
@@ -80,6 +88,10 @@
"type":"table"
},
{
"datasource":{
"type":"prometheus",
"uid":"default-ds-uid"
},
"description":"Tests migration of timeseries_aggregations transform to reduce transformation with column mappings (avg-\u003emean, max-\u003emax, min-\u003emin, total-\u003esum, current-\u003elastNotNull, count-\u003ecount).",
"gridPos":{
"h":3,
@@ -103,6 +115,10 @@
"type":"table"
},
{
"datasource":{
"type":"prometheus",
"uid":"default-ds-uid"
},
"description":"Tests migration of timeseries_to_rows transform to seriesToRows transformation.",
"gridPos":{
"h":3,
@@ -126,6 +142,10 @@
"type":"table"
},
{
"datasource":{
"type":"prometheus",
"uid":"default-ds-uid"
},
"description":"Tests migration of timeseries_to_columns transform to seriesToColumns transformation.",
"gridPos":{
"h":3,
@@ -149,6 +169,10 @@
"type":"table"
},
{
"datasource":{
"type":"prometheus",
"uid":"default-ds-uid"
},
"description":"Tests migration of table transform to merge transformation. Also tests auto alignment conversion to empty string.",
"gridPos":{
"h":3,
@@ -172,6 +196,10 @@
"type":"table"
},
{
"datasource":{
"type":"prometheus",
"uid":"default-ds-uid"
},
"description":"Tests that existing transformations are preserved and new transformation from old format is appended to the list.",
"gridPos":{
"h":3,
@@ -208,6 +236,10 @@
"type":"table"
},
{
"datasource":{
"type":"prometheus",
"uid":"default-ds-uid"
},
"description":"Tests handling of mixed numeric and string threshold values (int, string, float) with proper type conversion.",
"gridPos":{
"h":3,
@@ -231,6 +263,10 @@
"type":"table"
},
{
"datasource":{
"type":"prometheus",
"uid":"default-ds-uid"
},
"description":"Tests all color mode mappings: cell-\u003ecolor-background, row-\u003ecolor-background, value-\u003ecolor-text.",
"gridPos":{
"h":3,
@@ -254,6 +290,10 @@
"type":"table"
},
{
"datasource":{
"type":"prometheus",
"uid":"default-ds-uid"
},
"description":"Tests all alignment options: left, center, right, and auto (should convert to empty string).",
"gridPos":{
"h":3,
@@ -277,6 +317,10 @@
"type":"table"
},
{
"datasource":{
"type":"prometheus",
"uid":"default-ds-uid"
},
"description":"Tests both field matcher types: byName for exact matches and byRegexp for regex patterns.",
"gridPos":{
"h":3,
@@ -300,6 +344,10 @@
"type":"table"
},
{
"datasource":{
"type":"prometheus",
"uid":"default-ds-uid"
},
"description":"Tests various link configurations: with and without tooltip, with and without target blank.",
"gridPos":{
"h":3,
@@ -323,6 +371,10 @@
"type":"table"
},
{
"datasource":{
"type":"prometheus",
"uid":"default-ds-uid"
},
"description":"Tests various date format patterns and aliases.",
"gridPos":{
"h":3,
@@ -346,6 +398,10 @@
"type":"table"
},
{
"datasource":{
"type":"prometheus",
"uid":"default-ds-uid"
},
"description":"React table (table2) should not be migrated. Properties should remain unchanged.",
"gridPos":{
"h":3,
@@ -369,6 +425,10 @@
"type":"table"
},
{
"datasource":{
"type":"prometheus",
"uid":"default-ds-uid"
},
"description":"Angular table without styles property should not be migrated.",
"gridPos":{
"h":3,
@@ -392,6 +452,10 @@
"type":"table"
},
{
"datasource":{
"type":"prometheus",
"uid":"default-ds-uid"
},
"description":"Non-table panels should remain completely unchanged.",
"gridPos":{
"h":3,
@@ -415,6 +479,10 @@
"type":"timeseries"
},
{
"datasource":{
"type":"prometheus",
"uid":"default-ds-uid"
},
"description":"Other panel types should not be affected by table migration.",
"description":"Tests basic migration with default style pattern (/.*/) containing thresholds and colors. Should convert styles to fieldConfig.defaults with threshold steps.",
"gridPos":{
"h":3,
@@ -57,6 +61,10 @@
"type":"table"
},
{
"datasource":{
"type":"prometheus",
"uid":"default-ds-uid"
},
"description":"Tests comprehensive migration including: default style with thresholds/colors/unit/decimals/align/colorMode, column overrides with exact name and regex patterns, date formatting, hidden columns, and links with tooltips.",
"gridPos":{
"h":3,
@@ -80,6 +88,10 @@
"type":"table"
},
{
"datasource":{
"type":"prometheus",
"uid":"default-ds-uid"
},
"description":"Tests migration of timeseries_aggregations transform to reduce transformation with column mappings (avg-\u003emean, max-\u003emax, min-\u003emin, total-\u003esum, current-\u003elastNotNull, count-\u003ecount).",
"gridPos":{
"h":3,
@@ -103,6 +115,10 @@
"type":"table"
},
{
"datasource":{
"type":"prometheus",
"uid":"default-ds-uid"
},
"description":"Tests migration of timeseries_to_rows transform to seriesToRows transformation.",
"gridPos":{
"h":3,
@@ -126,6 +142,10 @@
"type":"table"
},
{
"datasource":{
"type":"prometheus",
"uid":"default-ds-uid"
},
"description":"Tests migration of timeseries_to_columns transform to seriesToColumns transformation.",
"gridPos":{
"h":3,
@@ -149,6 +169,10 @@
"type":"table"
},
{
"datasource":{
"type":"prometheus",
"uid":"default-ds-uid"
},
"description":"Tests migration of table transform to merge transformation. Also tests auto alignment conversion to empty string.",
"gridPos":{
"h":3,
@@ -172,6 +196,10 @@
"type":"table"
},
{
"datasource":{
"type":"prometheus",
"uid":"default-ds-uid"
},
"description":"Tests that existing transformations are preserved and new transformation from old format is appended to the list.",
"gridPos":{
"h":3,
@@ -208,6 +236,10 @@
"type":"table"
},
{
"datasource":{
"type":"prometheus",
"uid":"default-ds-uid"
},
"description":"Tests handling of mixed numeric and string threshold values (int, string, float) with proper type conversion.",
"gridPos":{
"h":3,
@@ -231,6 +263,10 @@
"type":"table"
},
{
"datasource":{
"type":"prometheus",
"uid":"default-ds-uid"
},
"description":"Tests all color mode mappings: cell-\u003ecolor-background, row-\u003ecolor-background, value-\u003ecolor-text.",
"gridPos":{
"h":3,
@@ -254,6 +290,10 @@
"type":"table"
},
{
"datasource":{
"type":"prometheus",
"uid":"default-ds-uid"
},
"description":"Tests all alignment options: left, center, right, and auto (should convert to empty string).",
"gridPos":{
"h":3,
@@ -277,6 +317,10 @@
"type":"table"
},
{
"datasource":{
"type":"prometheus",
"uid":"default-ds-uid"
},
"description":"Tests both field matcher types: byName for exact matches and byRegexp for regex patterns.",
"gridPos":{
"h":3,
@@ -300,6 +344,10 @@
"type":"table"
},
{
"datasource":{
"type":"prometheus",
"uid":"default-ds-uid"
},
"description":"Tests various link configurations: with and without tooltip, with and without target blank.",
"gridPos":{
"h":3,
@@ -323,6 +371,10 @@
"type":"table"
},
{
"datasource":{
"type":"prometheus",
"uid":"default-ds-uid"
},
"description":"Tests various date format patterns and aliases.",
"gridPos":{
"h":3,
@@ -346,6 +398,10 @@
"type":"table"
},
{
"datasource":{
"type":"prometheus",
"uid":"default-ds-uid"
},
"description":"React table (table2) should not be migrated. Properties should remain unchanged.",
"gridPos":{
"h":3,
@@ -369,6 +425,10 @@
"type":"table"
},
{
"datasource":{
"type":"prometheus",
"uid":"default-ds-uid"
},
"description":"Angular table without styles property should not be migrated.",
"gridPos":{
"h":3,
@@ -392,6 +452,10 @@
"type":"table"
},
{
"datasource":{
"type":"prometheus",
"uid":"default-ds-uid"
},
"description":"Non-table panels should remain completely unchanged.",
"gridPos":{
"h":3,
@@ -415,6 +479,10 @@
"type":"timeseries"
},
{
"datasource":{
"type":"prometheus",
"uid":"default-ds-uid"
},
"description":"Other panel types should not be affected by table migration.",
"description":"Tests v33 migration behavior when panel datasource is explicitly null. Should remain null after migration (returnDefaultAsNull: true).",
"gridPos":{
"h":3,
@@ -51,6 +55,10 @@
"type":"stat"
},
{
"datasource":{
"type":"elasticsearch",
"uid":"existing-target-uid"
},
"description":"Tests v33 migration behavior when panel datasource is already a proper object reference. Should remain unchanged.",
"gridPos":{
"h":3,
@@ -75,6 +83,10 @@
"type":"stat"
},
{
"datasource":{
"type":"loki",
"uid":"non-default-test-ds-uid"
},
"description":"Tests v33 migration when panel datasource is a string name. Should convert to proper object with uid, type, apiVersion.",
"gridPos":{
"h":3,
@@ -98,6 +110,10 @@
"type":"table"
},
{
"datasource":{
"type":"prometheus",
"uid":"default-ds-uid"
},
"description":"Tests v33 migration when panel has datasource string but empty targets array. Panel datasource should still migrate.",
"gridPos":{
"h":3,
@@ -283,6 +299,10 @@
"id":-1,
"panels":[
{
"datasource":{
"type":"prometheus",
"uid":"default-ds-uid"
},
"description":"Nested panel with string datasource should migrate to proper object reference, proving row panel recursion works.",
"description":"Tests v33 migration behavior when panel datasource is explicitly null. Should remain null after migration (returnDefaultAsNull: true).",
"gridPos":{
"h":3,
@@ -51,6 +55,10 @@
"type":"stat"
},
{
"datasource":{
"type":"elasticsearch",
"uid":"existing-target-uid"
},
"description":"Tests v33 migration behavior when panel datasource is already a proper object reference. Should remain unchanged.",
"gridPos":{
"h":3,
@@ -75,6 +83,10 @@
"type":"stat"
},
{
"datasource":{
"type":"loki",
"uid":"non-default-test-ds-uid"
},
"description":"Tests v33 migration when panel datasource is a string name. Should convert to proper object with uid, type, apiVersion.",
"gridPos":{
"h":3,
@@ -98,6 +110,10 @@
"type":"table"
},
{
"datasource":{
"type":"prometheus",
"uid":"default-ds-uid"
},
"description":"Tests v33 migration when panel has datasource string but empty targets array. Panel datasource should still migrate.",
"gridPos":{
"h":3,
@@ -283,6 +299,10 @@
"id":-1,
"panels":[
{
"datasource":{
"type":"prometheus",
"uid":"default-ds-uid"
},
"description":"Nested panel with string datasource should migrate to proper object reference, proving row panel recursion works.",
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.