* implement field selector list with search
* dont modify input array when filtering fields
filter metadata.namespace field and unsupported operators (!=)
update tests
* put list request in table test struct
* address the nits
* fix linter error - prealloc
* skip rows we dont have permission to Read()
* makes folder title a selectable field and fixes cyclic import with selectable field utils
* make gofmt
* makes folder title a selectable field and fixes cyclic import with selectable field utils
* make gofmt
* include metadata.name and metadata.namespace as default selectable fields in BuildGetAttrsFn() for selectable fields
* Extract embedded server provider
* Use openfga client for connecting to server
* refactor server init
* fix tests
* Don't run http server by default
* refactor HTTP server start
* refactor tracer init
* refactor tests
* release resources on server stop
* Fix failing user migration test (translate BIGINT UNSIGNED from openfga tables)
* release resources on server stop
* format
* Fix service shut down
* only close if zanzana enabled
* do not init zanzana server if no feature flag provided
* fix(unified): populate key_path during bulkimport
Rows in resource_history were being created with empty key_path values
during bulkimport (migration of dashboards/folders). This broke
functionality that depends on key_path for indexing/searching.
The fix adds a buildKeyPath helper function that constructs the key_path
in the same format as normal write operations, and updates processBulkWithTx
to set the KeyPath field when inserting into resource_history.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* test(unified): add verification for key_path population after bulkimport
Adds verifyKeyPathPopulated function to migration integration tests
that verifies no rows in resource_history have empty key_path values
after bulkimport completes.
Also changes actionStr fallback from "unknown" to the numeric action
value for better debugging.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
* Create settings service
* Apply request config overrides in middleware
* Add tlsSkipVerify setting for settings service client
* Abstract out ini interactions, add debug logs
* Use baggage header instead of Grafana-Namespace
* Exclude defaults.ini settings from the Settings Service
* Remove baseRequestConfig and instead create the structure new in each middleware call
* daggerbuild: Cache builders
* cache-builders in e2e build
* cache-builders on non-forks
* dont attempt to login to gar or dockerhub in forks; it won't work anyways
* use npx install playwright
* Exclude dist & node_modules from mount
* remove yarn.go; it's not used
* use correct registry for cache builds
* rebuild cached artifacts every 2 weeks
* Use grafanalabs-dev/docker-grafana-dev
* make lint-go
* Fix bad conflict resolution
* fix ubuntu and alpine base
* pass dek cache into encryption manager
* add namespace, plus unit tests for cache
* use the cache in most places
* flush the encryption cache during consolidation
* use noop cache
* update workspace
* a couple PR review updates
* de-bluge my PR
* sync enterprise_imports to main
* convert from double map to complex key map
* fix dek cache test
* use encrypted dek cache
* include a couple extra comments
* add comment
* remove caution period and consolidate add methods
* trailing whitespace
* a couple PR review updates
* unconditionally set cache
* include TODO
* add config validation
* make cache skippable
* update context modification to simple config and update documentation
* rename struct
* refactor team members endpoint to work with unistore
* define response and parse results
* make gofmt
* update legacy search to use teamRef for querying
* add unit tests for rest members
* add integration tests
* Add ownerRef to search result
* Remove unneeded test
* feat(search): return owner refs in dashboard search endpoint
- Refs are returned as string array:
`[ "iam.grafana.app/Team/test-team", "iam.grafana.app/User/test-user" ]`
* chore(search): update client and cleanup previous changes
---------
Co-authored-by: Rafael Paulovic <rafael.paulovic@grafana.com>
Adding a log line when parsing url in pull request url creator fails, as the error is silent now.
This will help troubleshoot situations where the url is badly formatted.
* Restore dashboards: Update permissions
* Expand check
* Extract copy
* Simplify checks
* add missing component
* prettier
* RestoreDashboards: Remove delete permission checks
Gate the restore dashboards feature solely by the feature toggle
instead of also checking for dashboard delete permissions. This allows
all users to access the recently deleted page when the feature is enabled.
* Fix BrowseDashboardsPage tests by restoring contextSrv mock
Restore the contextSrv import and hasPermission spy that were
incorrectly removed. These are needed for other permission checks
in the tests, not just the delete permission.
* refactor(unified): add separate target for search
* refactor(unified): add initializeBlobStorage, remove some comments, use noopService if diagnostics not set
* refactor(unified): add integration test and SearchClient
* chore(search): remove indexMetrics when search is disabled, adjust function names and struct fields
This PR introduces backend support for named notification policies in Grafana Alerting.
In addition to the existing single "user-defined" routing tree, notification policies can now
be created and managed individually.
The feature is gated behind an experimental feature flag alertingMultiplePolicies. When the
flag is disabled, the system behaves exactly as before and continues to expose a single
legacy routing tree in APIs.
* allow wildcard matching of k8s permission groups
* more consistent naming of arguments
* remove allowedWildcardPrefixes and associated helpers and tests
* sanity check to ensure no cross-talk
* simplify key finding logic; expand test coverage
* CloudWatch Logs: Select log groups with the log group selector and $__logGroups macro for OpenSearch Structured Query Language queries
* Update docs/sources/datasources/aws-cloudwatch/query-editor/index.md
Co-authored-by: Larissa Wandzura <126723338+lwandz13@users.noreply.github.com>
* make sure $__logGroups macro is wrapped in backticks
* Skip empty log group identifiers
* fix gocyclo lint error
---------
Co-authored-by: Larissa Wandzura <126723338+lwandz13@users.noreply.github.com>
* feat: generalize LabelTypes to all logs datasource
* feat: expose `getLabelDisplayTypeFromFrame` data source interface
* chore: upgrade test data scenario to support current dataplane spec
---------
Co-authored-by: Matias Chomicki <matias.chomicki@grafana.com>
Populate annotation tags from alert labels in "key:value" format,
excluding private labels (__ prefix/suffix). Tags are sorted
alphabetically and queryable via the annotations API.