Commit Graph
17405 Commits
Author SHA1 Message Date
Will Assis edb331dc00 fix(unified-storage): Fix legacysearch returning mismatched cell/column count in response (#102044)
Fix legacysearch returning less cells than column count in search response
2025-03-12 13:00:22 -07:00
owensmallwood 4d9bcc6c44 Revert "Unified Storage: Use match all query instead of wildcard for not-in requirement query" (#102058)
Revert "Unified Storage: Use match all query instead of wildcard for not-in r…"

This reverts commit 59d87fe3f1.
2025-03-12 12:28:49 -06:00
bfedf0b512 Dashboard: Redirect between v1alpha1 and v2alpha1 depending on stored version (#101292)
* wip: Create a proxy state manager to avoid complexity

* Read path redirecting

* add tests for unified dashboard API

* add tests

* Contemplate both formats in DashboardProxy

* Fix force old

* Fix tests for proxy

* catch errors

* Save as V2 when dynamic dashboard is enabled

* Improve tests

* Remove feature toggle

* Use kubernetesDashboards for e2e suite

* Fix issue when loading snapshots

* Fix typescript errors

* Integrate with backend conversion error

* Remove legacy annotation

* fix snapshot loading; lint

* Add missing hideTimeControls

* fix test

* make setupDashboardAPI to all suites

* refactor getDashboardAPI

* Add tests

* fix DashboardScenePage tests

* fix tests

* fix go tests

* Refactor to understand better the need of transforming to v2 to compare

* Fix detect changes logic

* yes status from schema gen

---------

Co-authored-by: alexandra vargas <alexa1866@gmail.com>
Co-authored-by: Haris Rozajac <haris.rozajac12@gmail.com>
2025-03-12 11:43:32 -06:00
Eric Leijonmarck 94020aa9cd Config: Remove setting editors_can_admin (#101607)
* Remove editors can admin

* delete file

* add ac_test back

* Add linting ignore

* more static ignore
2025-03-12 16:25:23 +00:00
Sam Jewell 21b9d45ca6 SQL Expressions: Add CASE/WHEN nodes and fixes (and test) for functions just added to allowlist (#102040)
* SQL Expressions: Add CASE/WHEN SQL nodes to allowlist

* Fixed and test for functions added in #102011

* Add remaining functions to the test-case

These are mostly aliases, so the LLM chose to omit them originally.
But adding now for completeness

* Fix ordering of allowed nodes
2025-03-12 15:57:50 +00:00
Peter Štibraný abe6a3121c spanner: disable recursive queries (#102032) 2025-03-12 15:43:06 +01:00
Peter Štibraný 9e1e338c5b signingkeys: Change PrivateKey struct type to string, to match TEXT type of SQL column in signing_keys table. (#102016) 2025-03-12 15:40:39 +01:00
Peter Štibraný f3df64b7f4 Pass BOOL values as real types (int/bool) instead of strings to SQL parameters. (#101961)
* Pass BOOL values as real types (int/bool) instead of strings to SQL parameters.

Fixes following integration tests when running with Spanner:
* TestIntegrationDataAccess
    * GetDataSourcesByType/Get_prunable_data_sources
* TestIntegrationUserAuthToken:
    * expires_correctly
    * can_properly_rotate_tokens
    *  keeps_prev_token_valid_for_1_minute_after_it_is_confirmed

* Fix more places where "true" or "false" string was passed as query parameter instead of bool value.

* Removed unit test because it brought unwanted dependencies on xorm into multiple modules.
2025-03-12 15:40:11 +01:00
Georges ChaudyandKarl Persson 1f637d07eb unistore: check namespace (#102020)
* check namespace in unistore

* fix tests

* fix trace status

* Use capital letter

---------

Co-authored-by: Karl Persson <23356117+kalleep@users.noreply.github.com>
2025-03-12 14:37:17 +01:00
Nick Richmond 00d9916113 ExploreMetrics: Preinstall metrics drilldown app (#100094)
* feat: preinstall metrics drilldown app

* refactor: simplify

* fix: read feature toggles before plugin settings
2025-03-12 09:23:10 -04:00
Yulia Shanyrova 3f2eb087ea Plugins: Update all core plugins with raise issue and docs links (#101929)
* update all core plugins with raise issue and docs links

* fix plugin loader test, run prettier

* fix test

* update test results for api plugin tests
2025-03-12 14:15:46 +01:00
ismail simsek dcba71a0b0 Prometheus: Improve native histogram response parsing performance (#102024)
* introduce tests

* improve allocation by %61

* ~%27 improvement

goos: darwin
goarch: arm64
pkg: github.com/grafana/grafana/pkg/promlib/converter
cpu: Apple M1 Pro
                                                            │  pmem.0.txt  │             pmem.2.txt             │
                                                            │    sec/op    │   sec/op     vs base               │
ReadPrometheusStyleResult_FromFile/prom-query-range.json-10   117.72µ ± 6%   82.90µ ± 4%  -29.57% (p=0.002 n=6)

                                                            │  pmem.0.txt   │             pmem.2.txt              │
                                                            │     B/op      │     B/op      vs base               │
ReadPrometheusStyleResult_FromFile/prom-query-range.json-10   104.34Ki ± 0%   76.09Ki ± 0%  -27.08% (p=0.002 n=6)

                                                            │ pmem.0.txt  │            pmem.2.txt             │
                                                            │  allocs/op  │ allocs/op   vs base               │
ReadPrometheusStyleResult_FromFile/prom-query-range.json-10   2463.0 ± 0%   899.0 ± 0%  -63.50% (p=0.002 n=6)

* add more tests

* remove comment lines

* read string as slice to prevent type conversion

* golang lint

* revert appendValueFromString improvement

* fix merging issues

* improve native histogram response parsing
2025-03-12 14:12:24 +01:00
ismail simsek f64be062c4 Prometheus: Improve response parser performance (#101517)
* introduce tests

* improve allocation by %61

* ~%27 improvement

goos: darwin
goarch: arm64
pkg: github.com/grafana/grafana/pkg/promlib/converter
cpu: Apple M1 Pro
                                                            │  pmem.0.txt  │             pmem.2.txt             │
                                                            │    sec/op    │   sec/op     vs base               │
ReadPrometheusStyleResult_FromFile/prom-query-range.json-10   117.72µ ± 6%   82.90µ ± 4%  -29.57% (p=0.002 n=6)

                                                            │  pmem.0.txt   │             pmem.2.txt              │
                                                            │     B/op      │     B/op      vs base               │
ReadPrometheusStyleResult_FromFile/prom-query-range.json-10   104.34Ki ± 0%   76.09Ki ± 0%  -27.08% (p=0.002 n=6)

                                                            │ pmem.0.txt  │            pmem.2.txt             │
                                                            │  allocs/op  │ allocs/op   vs base               │
ReadPrometheusStyleResult_FromFile/prom-query-range.json-10   2463.0 ± 0%   899.0 ± 0%  -63.50% (p=0.002 n=6)

* add more tests

* remove comment lines

* read string as slice to prevent type conversion

* golang lint

* revert appendValueFromString improvement

* fix merging issues
2025-03-12 13:16:19 +01:00
Sam Jewell 4bd5f29e05 SQL Expressions: Allow more functions (#102011)
I used Cursor and Claude 3.7 thinking to expand the list of functions
we allow. Specifically I needed `abs`.

TODO: Check each of these in the official MySQL docs to ensure they
are all safe:
eg. this doc: https://dev.mysql.com/doc/refman/8.4/en/flow-control-functions.html#operator_case
2025-03-12 11:39:48 +00:00
ismail simsek dacb25ec2a Prometheus: Add labels to all native histogram fields (#101812)
add labels to all histogram fields
2025-03-12 12:34:23 +01:00
Will Browne 5a2cba7b01 Plugins: Forward HTTP headers to plugin streaming calls (#101960)
* forward HTTP headers to plugin streaming calls

* fixup

* fix test based on feedback

* improve test assertions
2025-03-12 10:37:07 +00:00
Peter Štibraný ee23a7a7d9 Disable dashboard and folder synchronization when running on Spanner. (#102007) 2025-03-12 11:02:00 +01:00
Selene e128c36127 Codegen: Cog and go fixes (#101408)
* Update to latest cog version and update workspaces

* Update generated go files

* Try to avoid concurrency issues

* Update workspaces

* Try to remove the sync...

* Remove grafana dependency from xorm go.mod file
2025-03-12 10:12:56 +01:00
Ryan McKinley e6f682bc14 K8s/Dashboards: Fix title extraction (#101990) 2025-03-12 09:46:12 +02:00
Matheus MacabuandThomas Fournier 848d49e70f Chore: Add username option for redis remote cache (#101787)
* Chore: Add username option for redis remote cache

(cherry picked from commit 25e28dc85e)

* Chore: Update docs and config with sample Redis conn with user+pass

---------

Co-authored-by: Thomas Fournier <tfournier@evolves.fr>
2025-03-12 08:26:41 +01:00
Ryan McKinley cd7b66e2e8 Provisioning: Add RTK client in main (#101991)
add frontend
2025-03-12 10:01:55 +03:00
Alex Khomenko f02803b027 Openapi: Remove duplicate group (#101933)
Remove duplicate group
2025-03-12 09:00:49 +03:00
Alexander Akhmetov 7dd6f52630 Alerting: Add MissingSeriesEvalsToResolve option to the AlertRule (#101184) 2025-03-11 22:12:06 +01:00
Yuri Tseretyan 943b73a682 Alerting: Add scheduled clean-up of deleted rules (#101963)
* add scheduled clean up of deleted rules


---------

Signed-off-by: Yuri Tseretyan <yuriy.tseretyan@grafana.com>
2025-03-11 22:58:26 +02:00
Alexander Akhmetov 85b0b47efd Alerting: Allow disabling provenance in the Prometheus conversion API (#101573)
When creating Grafana-managed alerts from Prometheus rule definitions with mimirtool or cortextool, the rules are marked as "provisioned" and are not editable in the Grafana UI. This PR allows changing this by providing an extra header: --extra-header="X-Disable-Provenance=true".

When provenance is disabled, we do not keep the original rule definition in YAML, so it is impossible to read it back using the Prometheus conversion API (mimirtool/cortextool). This is intentional because if we did keep it and the rule was later changed in the UI, its Prometheus YAML definition would no longer reflect the latest version of the alert rule, as it would be unchanged.
2025-03-11 19:53:28 +01:00
Sam Jewell 7a3415148e SQL Expressions: Add cell-limit for input dataframes (#101700)
* expr: Add row limit to SQL expressions

Adds a configurable row limit to SQL expressions to prevent memory issues with large
result sets. The limit is configured via the `sql_expression_row_limit` setting in
the `[expressions]` section of grafana.ini, with a default of 100,000 rows.

The limit is enforced by checking the total number of rows across all input tables
before executing the SQL query. If the total exceeds the limit, the query fails
with an error message indicating the limit was exceeded.

* revert addition of newline

* Switch to table-driven tests

* Remove single-frame test-cases.

We only need to test for the multi frame case. Single frame is a subset
of the multi-frame case

* Add helper function

Simplify the way tests are set up and written

* Support convention, that limit: 0 is no limit

* Set the row-limit in one place only

* Update default limit to 20k rows

As per some discussion here:
https://raintank-corp.slack.com/archives/C071A5XCFST/p1741611647001369?thread_ts=1740047619.804869&cid=C071A5XCFST

* Test row-limit is applied from config

Make sure we protect this from regressions

This is perhaps a brittle test, somewhat coupled to the code here. But
it's good enough to prevent regressions at least.

* Add public documentation for the limit

* Limit total number of cells instead of rows

* Use named-return for totalRows

As @kylebrandt requested during review of #101700

* Leave DF cells as zero values during limits tests

When testing the cell limit we don't interact with the cell values at
all, so we leave them at their zero values both to speed up tests, and
to simplify and clarify that their values aren't used.

* Set SQLCmd limit at object creation - don't mutate

* Test that SQL node receives limit when built

And that it receives it from the Grafana config

* Improve TODO message for new Expression Parser

* Fix failing test by always creating config on the Service
2025-03-11 17:14:33 +00:00
Will Assis 42ae2fb026 fix(unified-storage): add missing dashboard legacy_id when in legacy read mode (#101944)
* add missing dashboard legacy_id when in modes 0-2
2025-03-11 12:56:34 -04:00
Yuri Tseretyan 7e4beb2074 Alerting: API to return deleted rules (#101429) 2025-03-11 12:40:44 -04:00
owensmallwood 59d87fe3f1 Unified Storage: Use match all query instead of wildcard for not-in requirement query (#101953)
use match all query insteaed of wildcard
2025-03-11 10:15:58 -06:00
Alexander Zobnin f6f6ae4496 Zanzana: Update docs with subresources description (#101948)
* Zanzana: Update docs with subresources description

* clarify resource name
2025-03-11 16:27:17 +01:00
Will Browne 510c76df49 Chore: Update to latest go plugin SDK (#101939)
* update to latest go plugin SDK

* add missing changes
2025-03-11 14:57:19 +00:00
Matthew Thorning d9cb6e632d Navigation: Add the IsNew badge to the IRM menu item (#101926)
add the `IsNew` badge to the IRM menu item
2025-03-11 14:31:43 +00:00
Will Browne c74a5fcbed Chore: Avoid simplejson usage in xorm module (#101943)
avoid simplejson usage
2025-03-11 14:24:20 +00:00
Steve Simpson bbab62ce39 Alerting: Select remote write path dependent on metrics backend type. (#101891)
The remote write path differs based on whether the data source is actually
Prometheus, Mimir, Cortex, or an older version of Cortex. We do not want
users to have to specify the path, so this change determines the path as
best it can.

It may be in the future we have to make this configurable per-datasource
to cater for setups where it's impossible to determine the correct path.
2025-03-11 13:45:16 +01:00
maicon 927f7befd6 Unistore: Create default permissions through Folder APIServer (#101420)
* Unistore: Declare a new storage to set default folder permissions

Signed-off-by: Maicon Costa <maiconscosta@gmail.com>

* Remove the setting of default permissions from folder legacy storage

Signed-off-by: Maicon Costa <maiconscosta@gmail.com>

* Disable setting of folder permissions when Api Server is enabled

Signed-off-by: Maicon Costa <maiconscosta@gmail.com>

* Reverts grafana/grafana#100019

Signed-off-by: Maicon Costa <maiconscosta@gmail.com>

* Add unit test

Signed-off-by: Maicon Costa <maiconscosta@gmail.com>

* check error on unit test

Signed-off-by: Maicon Costa <maiconscosta@gmail.com>

* Add unit test

Signed-off-by: Maicon Costa <maiconscosta@gmail.com>

* Remove unused fields

Signed-off-by: Maicon Costa <maiconscosta@gmail.com>

* Add unit tests for folder_storage

Signed-off-by: Maicon Costa <maiconscosta@gmail.com>

* Remove duplicated import

Signed-off-by: Maicon Costa <maiconscosta@gmail.com>

* Fix unit test

Signed-off-by: Maicon Costa <maiconscosta@gmail.com>

---------

Signed-off-by: Maicon Costa <maiconscosta@gmail.com>
2025-03-11 11:33:08 +00:00
Gabriel MABILLE c8f810b422 Authz: Check namespace is set in the context (#101723)
* Authz: Test List

* Anonymous case

* Cover rendering

* Authz: Check namespace is set in the context

* Explicitly request a namespace check in the storage functions

* Revert logic
2025-03-11 12:04:33 +01:00
Torkel Ödegaard b4366db1f1 ThemeDrawer: Change theme from anywhere and preview them (#100405)
* ThemeDrawer: Change theme from anywhere and preview them

* Update

* added subtitle

* Use new component

* Fixes

* Fix runtime ony wrong prop

* Fixed saving issue

* update lang file

* Fixed circular dep

* fix import
2025-03-11 12:03:10 +01:00
Igor SuleymanovandRyan McKinley ea89a68028 K8s/Dashboards: Generate Dashboards k8s APIs using Grafana App SDK (#99966)
* Generate Dashboard kinds with `grafana-app-sdk`

Signed-off-by: Igor Suleymanov <igor.suleymanov@grafana.com>

* Hack together a fix for invalid TS codegen for v0 & v1

Signed-off-by: Igor Suleymanov <igor.suleymanov@grafana.com>

* Address Go linter issues

Signed-off-by: Igor Suleymanov <igor.suleymanov@grafana.com>

* Address TS linter issues

Signed-off-by: Igor Suleymanov <igor.suleymanov@grafana.com>

* Add new app to CODEOWNERS

Signed-off-by: Igor Suleymanov <igor.suleymanov@grafana.com>

* Fix a couple of issues detected by tests

Signed-off-by: Igor Suleymanov <igor.suleymanov@grafana.com>

* Update OpenAPI definitions and test files

Signed-off-by: Igor Suleymanov <igor.suleymanov@grafana.com>

* Remove title from Dashboard v1alpha1 spec

Signed-off-by: Igor Suleymanov <igor.suleymanov@grafana.com>

* Remove unused CUE schemas

Signed-off-by: Igor Suleymanov <igor.suleymanov@grafana.com>

* remove unrelated files

* allow any in the generated betterer

* Add a comment explaining why we don't use deepcopy-gen

Signed-off-by: Igor Suleymanov <igor.suleymanov@grafana.com>

* Default to v2alpha1 if dashboards v2 FF is enabled

Signed-off-by: Igor Suleymanov <igor.suleymanov@grafana.com>

---------

Signed-off-by: Igor Suleymanov <igor.suleymanov@grafana.com>
Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
2025-03-11 13:00:37 +02:00
Josh Hunt 210c886bb7 I18n: Add new language options (#101899)
* Add newLanguages feature toggle

* add additional languages behind feature toggle

* be more forgiving of what config looks like in tests

* tweak regex

* put pt-br back

* restore order of pt-BR and cn-Hans, rename EXTRA_LANGUAGES to NEW_LANGUAGES

* stricter test regex
2025-03-11 12:07:16 +02:00
Sam Jewell dd5db23123 SQL Expressions: Update comment for flag definition (#101919)
Update comment for SQL Expressions flag definition
2025-03-11 09:59:23 +00:00
Carl Bergquist 14ad1dec38 conf: hides scope feature toggles from docs (#101913)
Signed-off-by: bergquist <carl.bergquist@gmail.com>
2025-03-11 10:12:58 +01:00
Peter Štibraný fa809ac417 Fix more LastInsertId calls (#101892)
* Fix more places where LastInsertId is used without proper directive for Spanner.

* Fix tests.
2025-03-11 09:03:03 +01:00
Ryan McKinley 64f1df69d5 Search: Rename managed object index (#101856) 2025-03-10 19:48:53 +03:00
Peter Štibraný 9858e40a02 Spanner: Add trivial sequence number generator. (#101777)
* Add trivial sequence number generator.
2025-03-10 17:37:44 +01:00
Tito Lins 8c51af49e5 Alertmanager: upgrade alerting (#101870) 2025-03-10 16:59:21 +01:00
Peter Štibraný 0ce67dad74 Spanner: support for lastInsertId (#101770)
* Support for returning inserted ID in Spanner.
* Convert bytes to string when storing them into text column.
2025-03-10 15:59:06 +01:00
Peter Štibraný 32f651e9aa Spanner: update DB snapshot (#101879)
* Update spanner snapshot to include migrations from grafana-enterprise.

* Move sql dump tool (test) to grafana-enterprise.
2025-03-10 15:58:12 +01:00
Will Assis f020aae783 fix(unified-storage): use explicit nil where applicable in dualwrite package (#101783)
use explicit nil where applicable in dualwrite package
2025-03-10 08:11:02 -04:00
Peter Štibraný fd6a4908f1 Support Spanner's UNION syntax, which needs to be UNION DISTINCT or UNION ALL. (#101768)
* Support Spanner's UNION syntax, which needs to be UNION DISTINCT or UNION ALL.
2025-03-10 12:33:52 +01:00
Alex Khomenko 607d39b573 Folders: Add k8s API client (#101862)
* Add folder k8s API

* Betterer

* Update index
2025-03-10 12:19:14 +01:00