This adds validating admission hooks to enforce the requirements on AlertRules and RecordingRules that are currently enforced through the provisioning service and storage mechanisms in preparation of a consistent validation in both legacy storage and unified storage. It also adds a mutating admission hook to the app to ensure that folder annotations and folder labels are kept in sync so we can perform label-selector lists.
* Validate Job Specs
* Add comprehensive unit test coverage for job validator
- Added 8 new test cases to improve coverage from 88.9% to ~100%
- Tests for migrate action without options
- Tests for delete/move actions with resources (missing kind)
- Tests for move action with valid resources
- Tests for move/delete with both paths and resources
- Tests for move action with invalid source paths
- Tests for push action with valid paths
Now covers all validation paths including resource validation and
edge cases for all job action types.
* Add integration tests for job validation
Added comprehensive integration tests that verify the job validator properly
rejects invalid job specifications via the API:
- Test job without action (required field)
- Test job with invalid action
- Test pull job without pull options
- Test push job without push options
- Test push job with invalid branch name (consecutive dots)
- Test push job with path traversal attempt
- Test delete job without paths or resources
- Test delete job with invalid path (path traversal)
- Test move job without target path
- Test move job without paths or resources
- Test move job with invalid target path (path traversal)
- Test migrate job without migrate options
- Test valid pull job to ensure validation doesn't block legitimate requests
These tests verify that the admission controller properly validates job specs
before they are persisted, ensuring security (path traversal prevention) and
data integrity (required fields/options).
* Remove valid job test case from integration tests
Removed the positive test case as it's not necessary for validation testing.
The integration tests now focus solely on verifying that invalid job specs
are properly rejected by the admission controller.
* Fix movejob_test to expect validation error at creation time
Updated the 'move without target path' test to expect the job creation
to fail with a validation error, rather than expecting the job to be
created and then fail during execution.
This aligns with the new job validation logic which rejects invalid
job specs at the API admission control level (422 Unprocessable Entity)
before they can be persisted.
This is better behavior as it prevents invalid jobs from being created
in the first place, rather than allowing them to be created and then
failing during execution.
* Simplify action validation using slices.Contains
Replaced manual loop with slices.Contains for cleaner, more idiomatic Go code.
This reduces code complexity while maintaining the same validation logic.
- Added import for 'slices' package
- Replaced 8-line loop with 1-line slices.Contains call
- All unit tests pass
* Refactor job action validation in ValidateJob function
Removed the hardcoded valid actions array and simplified the validation logic. The function now directly appends an error for invalid actions, improving code clarity and maintainability. This change aligns with the recent updates to job validation, ensuring that invalid job specifications are properly handled.
* Provisioning: Preserve in progress job data
* Refactor code and cover more situations
* Fix linting
* Fix issue with remove path operation for started time
* Cleanup
* prettier
---------
Co-authored-by: Roberto Jimenez Sanchez <roberto.jimenez@grafana.com>
What is this feature?
This PR implements compressed periodic save for alert state storage, providing a more efficient alternative to regular periodic saves by grouping alert instances by rule UID and storing them using protobuf and snappy compression. When enabled via the state_compressed_periodic_save_enabled configuration option, the system groups alert instances by their alert rule, compresses each group using protobuf serialization and snappy compression, and processes all rules within a single database transaction at specified intervals instead of syncing after every alert evaluation cycle.
Why do we need this feature?
During discussions in PR #111357, we identified the need for a compressed approach to periodic alert state storage that could further reduce database load beyond the jitter mechanism. While the jitter feature distributes database operations over time, this compressed periodic save approach reduces the frequency of database operations by batching alert state updates at explicitly declared intervals rather than syncing after every alert evaluation cycle.
This approach provides several key benefits:
- Reduced Database Frequency: Instead of frequent sync operations tied to alert evaluation cycles, updates occur only at configured intervals
- Storage Efficiency: Rule-based grouping with protobuf and snappy compression significantly reduces storage requirements
The compressed periodic save complements the existing jitter mechanism by providing an alternative strategy focused on reducing overall database interaction frequency while maintaining data integrity through compression and batching.
Who is this feature for?
- Platform/Infrastructure teams managing large-scale Grafana deployments with high alert cardinality
- Organizations looking to optimize storage costs and database performance for alerting workloads
- Production environments with 1000+ alert rules where database write frequency is a concern
* Script for setting up gdev scope objects
* Script for setting up gdev scope objects
* Format
* Update codeowners
* Do a feature flag check
* Formatting
* Remove FF check, because creation is explicit anyways
* Formatting
* Use fork of slog-gokit to fix data race
Replace github.com/tjhop/slog-gokit with fork that includes fix for data race in handler.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
* Update workspace
* Bump github.com/tjhop/slog-gokit to v0.1.5
* Update go.sum
---------
Co-authored-by: Claude <noreply@anthropic.com>
* Set the log group name when executing log queries from the frontend
* Add helper for a data source instance to check if its a monitoring account
* Execute log queries with log group identifiers only for monitoring account queries
* fix cloudwatch datasource.ts tests
* remove unneeded check
* LogDetailsContext: create component
* LogListContext: extract details out of context
* Refactor components to use new context provider
* More component updates
* Update currentLog implementation
* Use new context provider
* LogLineDetails: prevent cascade of listeners
* LogDetailsContext: sync currentLog with changes
* LogLine: use icon status to show the current log
* LogLineDetails: first tab is the last open log line
* LogLineDetailsLog: respect font size
* Update tests
* Update tests
* LogList: add integration test
* LogLine: use level to mark the current log
* Chore: only check uids, no need for references
* Fix duplicated hook usage
* chore: overflow auto
* LogList: consider field selector width
* Revert "LogLine: use level to mark the current log"
This reverts commit 2d5d54d9a7.
* LogLine: darken details displayed, font weight bold current
* LogLineMenu: icon when current log
* Differenciate contrast from light and dark themes
* Use angle-right for the active icon
* annotation legacy store with api server, read only
* Add a feature flag for annotations app
* implement list filters
* annotations are not addressable by ID for read operations
* fix registry apps test
* add ownership for an app
* disable linter
* typo, of course
* fix go workspace
* update workspace
* copy annotation app in dockerfile
* update workspace
---------
Co-authored-by: Tania B. <10127682+undef1nd@users.noreply.github.com>
* fix: use step output instead of !cancelled() in condition
We are uploading profile files without need otherwise
* fix: try using !cancelled() and output
Otherwise, step isn't triggered due to failure of the previous one
* Add IntersectionObserver to render rule viz panel only when visible
* Move data transformations to dataTransform file
* Add tests for data transform
* Use a new time series transformation algorithm
* Reduce the number of time series data conversion
* Memoize small components
* Update tests
* Remove some comments
* Use Box component for styling. Remove unnecessary effect dependency
* cleanup
* library panel via search
* test cleanup
* merge main
* add FindDashboards mock
* no matching dashbaords should return empty
* do not alllow name and libraryPanel query
* fix: delete folders using postorder
* chore: use helper function and do not add method to Folder store
- addresses other review comments fixing log messages and cleans up the unit tests
* chore: run library element tests on modes 2,3,5 only
* chore: adjust to folder.SortByPostorder(folders []*Folder)
* chore: run library panels tests in mode 2,3,5 only
* chore: run tests in all modes and increase timeout
- adjusting the modes and tweaking configs will be done separately
* fix: delete subfolder dangling panels and error if used
* chore: add observation about library panel DeleteInFolders
- logs folders UIDs on DeleteInFolders error
* chore: add integration test for blocking library panel deletion and handling dangling library panels
* chore: fix integration test on mode 4 and 5
* CommanPalette: Add Assistant integration for empty state
* Update assistant package and use new onClick pop
* i18n
* Update public/locales/en-US/grafana.json
Co-authored-by: Sven Grossmann <sven.grossmann@grafana.com>
* Update public/app/features/commandPalette/CommandPalette.tsx
Co-authored-by: Sven Grossmann <sven.grossmann@grafana.com>
* Update test
---------
Co-authored-by: Sven Grossmann <sven.grossmann@grafana.com>
* Style tweaks of span bar row
* More tweaks
* More tweaks to span style
* 2px width for the service color border
* Refactor SpanBarRow to function component
* Refactor SpanDetailRow to function component
* Refactor SpanTreeOffset to function component
* eslint ignore
* Service name font weight to 500
* Don't render the last indentGuide if the span doens't have children
* Fix tests
Run the app runner in a goroutine in the post-start hook, as the '/readyz' endpoint for the API server waits for a non-nil error response from the post-start hook to mark it as ready.
The query which fetches alert rules in a paginated manner ordered by `rule_group` can result in strange and inconsistent ordering when the database uses a case-insensitive collation for the `rule_group` column. This can lead to scenarios where rules from different groups are interleaved in the results, making pagination unreliable and the returned number of rule_groups incorrect.
Related to #88990
* feat: add a placement property to annotations model v2
* chore: update scenes to `v6.42.1`
* chore: run `make gen-apps`
* fix: cater for cases when there is no data layer
* chore: swagger clean
* chore: update api clients
* fix: correct type guard
* fix: display control labels in the default renderer as well for DashboardDataLayerSet
* Provisioning: allow access check to proceed even when non access policy
* Provisioning: access checker needs this for MT
* add permissions registration
* remove scopes
* use in MT for now
* no need to document an internal flag here
* revert vscode change
* refactor the authZ permission evaluation and mapper code to allow evaluating unscoped actions beyond creation
* update wire
* gofmt
* add boolean to struct
---------
Co-authored-by: IevaVasiljeva <ieva.vasiljeva@grafana.com>
* Jaeger: Migrate Services and Operations to the gRPC Jaeger endpoint (#112384)
* add grpc feature toggle
* move types into types.go
* creates grpc client functions for services and operations
* Call grpc services function when feature flag is enabled for health check
* remove unnecessary double encoding
* check for successful status code before decoding response and return nil in case of successful response
* remove duplicate code
* use variable
* fix error type in testsz
* Jaeger: Migrate search and Trace Search calls to use gRPC endpoint (#112610)
* move all types into types package except for JagerClient
* move all helper functions into utils package
* change return type of search function to be frames and add grpc search functionality
* fix tests
* fix types and the way we check error response from grpc
* change trace name and duration unit conversion
* fix types and add tests
* support queryAttributes
* quick limit implementation in post processing
* add todo for attributes / tags
* make trace functionality ready to support grpc flow
* add functions to process search response for a specific trace and create the Trace frame
* tests for helper funtions
* remove grpc querying for now!
* change logic to be able to process and support multiple resource spans
* remove logic for gRPC from grpc_client.go
* add equivalent fields for logs and references
* add tests for grpcTraceResponse function
* fix types after merge with main
* fix status code checks and return nil for error on successful responses
* enable reading through config flag for trace search
* create sigle key value type since they are similar for OTLP and non OTLP based formats
* reference right type
* convert events and links into references and logs
* add status code, status message and kind to data frame
* fix tests to accomodate new format
* remove unused function and add more tests
* remove edit flag for jsonc golden test files
* add clarifying comment
* fix tests and linting
* fix golden files for testing
* fix typo
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* fix typo
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* fix typo
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* add clarifying comment
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* remove unnecessary logging statement
* fix downstream errors
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* use downstreamerrorf where applicable and add missing downstream eror sources.
* tests
---------
Co-authored-by: ismail simsek <ismailsimsek09@gmail.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Enhance ScopesService to support scopeNodeId in URL parameters for improved backward compatibility. Update changeScopes method to accept scopeNodeId, allowing for better handling of scope nodes. Adjust ScopesInput to prioritize scope node titles and ensure loading states are managed correctly. Refactor related logic in ScopesSelectorService for consistent scope handling.
* Scopes: Add tests for scope_node URL sync and scopeNodeId handling
- Add ScopesService.test.ts with tests for URL parameter handling
- Test scope_node and scope_parent reading from URL
- Test scope_node writing to URL with scope_parent reset
- Test backward compatibility with legacy scope_parent
- Test URL sync when scopes and scopeNodeId change
- Add tests to ScopesSelectorService.test.ts for changeScopes
- Test scopeNodeId assignment (only first scope gets it)
- Test handling scopeNodeId without parentNodeId
- Test backward compatibility when only parentNodeId provided
All 13 new tests passing, maintaining 100% test coverage.
* Fix linting error
* Fix comments
* add depreacted width to instance details drawer
* prettier
* use percentage instead
* use width aligned with the left column in the parent
* clamp value for wide screen monitors
* refactor: use hook instead of function for calculations
* refactor: use context provider for right column for the calculation of the width
* remove unnecessary changes exporting styles values
* Secrets: Refactor data_key_id out of the encoded secure value payload (#111852)
* everything compiles
* tests pass
* remove file included by accident
* add entry to gitignore
* some scaffolding for the migration executor
* remove file
* implement and test the migration
* use xkube.Namespace in our interfaces
* add todo
* update wire deps
* add some logs
* fix wire dependency ordering
* create tests to validate error conditions during migrations
* only run the migration as an MT api server
* formatting issues
* change detection of secrets running as MT server
* add todo
* use more specific initializer flags
* make secrets playwright tests work
* set new properties to true by default
* remove developer mode flag
* fix unit tests
* docs: Update Logs Visualizations topic
* updated based on review comments
* Add log details options
* Updated main image, moved log details info to intro and added screenshot of menu
* Changed max width of log menu image
* Added screenshot with log line icons highlighted
* Replaced example image
---------
Co-authored-by: Isabel Matwawana <isabel.matwawana@grafana.com>
Return the SQL schema for all DS queries in request (to provide information to AI / Autocomplete for SQL expressions).
All DS queries are treated as if they were inputs to SQL expressions in terms of conversion, regardless if they are selected in a query or not.
Requires feature toggle queryService = true
Endpoint is apis/query.grafana.app/v0alpha1/namespaces/default/sqlschemas
---------
Co-authored-by: Todd Treece <360020+toddtreece@users.noreply.github.com>
* refactor ErrorBoundary so it doesn't trigger the lint rule
* refactor ErrorBoundaryAlert to functional component
* convert StatPanel to a functional component
* convert ServiceAccountPicker to a functional component
* convert UserPicker to a functional component
* don't need displayName when not memoized
* convert TimelineChart to a functional component
* convert UserLdapSyncInfo to a functional component
* convert UserOrgs to functional component
* convert OrgRow to a functional component
* convert UserSessions to a functional component
* convert TimePickerSettings to a functional component
* convert DataSourcePluginSettings to a functional component
* convert ExploreTimeControls to a functional component
* convert SearchBarInput to a functional component
* convert LiveConnectionWarning to a functional component
* convert ConcatenateTransformerEditor
* convert ConstantVariableEditor a functional component
* convert VariableInput to a functional component
* convert ConfigEditor to a functional component
* convert CSVWavesEditor to a functional component
* Provisioning: Show configured and last used branches
* Remove unused var
* Add hooks
* Extract branch logic
* remove type assertion
* fix tests
* Memoize descriptions
Use fork that does not have cgo as default, had to revert build tag method attempt since it broke things like running go test on macs (without the tag) #112289.
* Render UNSAFE hidden dashboard controls
* Remove unused imports
* Extract to function and write test
* Remove unnecessary context from test
* Remove exclamation
* add extension for drilldown to add to dashboard
* reuse configure add to dashboard function callback
* structure for drilldown add to dashboard
* fix imports
* fix tests
* expose as a component
* remove extension link
* get component ready to extend
* lazy load component
* add component to exposed component registry
* update folder structure to not work in explore folder
* keep dependencies clean
* nice structure to let folks know this is a drilldown integration
* update code owners for new file
* make exposed component more generic, step one, update component id
* step 2, expose add to dashboard form component
* add more explicit useAbsolutePath option to form
* remove old implementation code for drilldown specific component
* commit translation
* add comments to avoid breaking changes
* add e2e test for add to dashboard form component
* fix flaky test
* add exposed component id to e2e test app
* remove gridPos in buildPanel fallback fn
* add code comment for useAbsolutePath's purpose
* remove gridPos from e2e test
* Display subtitle and enable direct scopes apply
* Extract each type into its own component
* Fix unit integration test
* Fix fe linting
* Fix imports
* Import order
* Update generated type
* Update type generation
* Format go
* Add test case for radio button container selection
* Remove infra mock
* Remove non-existant imports
* Remove unused assertions
* Refactor tree item for a11y
* Add proper keyboard support for directly applying scope
* Update i18n
* Fix button selector
* Remove test code
* Fix race condition for seletion vs blur update
* Something is working
* Progress
* Update
* Update
* Update
* Some new unit tests
* Fix
* time shift fix
* Update
* Always show hidden toggle
* Update
* Table: Sparkline Cell inspect support
* update to better support FieldType.other structures
* clean up styling a bit for empty case
* fix test import
* add test for no x case for sparkline
* fix merge mistake
* fix test import
* Grafana: Add random walk configuration options to Grafana datasource
Add UI controls to configure random walk parameters (min, max, start value,
spread, noise, drop percent) to match TestData datasource functionality.
- Add RandomWalkEditor component with inline number inputs for all parameters
- Update GrafanaQuery type to include random walk configuration fields
- Update backend to parse and apply query parameters to RandomWalk function
- Configuration options match TestData datasource UX for consistency
* Grafana: Add series count support to random walk
Add ability to generate multiple random walk series in a single query
for complete parity with TestData datasource.
- Add seriesCount field to RandomWalkEditor
- Update backend to loop and generate multiple frames based on series count
- Default to 1 series if not specified for backward compatibility
* Grafana: Improve random walk editor UI with better organization and tooltips
Enhance the random walk configuration UI for better usability:
- Organize fields into two logical rows (core config vs fine-tuning)
- Add helpful tooltips to all fields explaining their purpose
- Increase label width to prevent text wrapping
- Group related fields visually for better comprehension
Row 1: Series count, Start value, Min, Max (basic shape and range)
Row 2: Spread, Noise, Drop % (randomness and variation controls)
This provides a cleaner, more intuitive experience compared to TestData's
single-row layout, making it easier for users to configure random walks.
* Grafana: Format RandomWalkEditor code
Apply consistent formatting to RandomWalkEditor component.
* Grafana: Add E2E tests for random walk configuration
Add comprehensive Playwright E2E tests to verify random walk functionality:
- Test that all configuration fields render correctly
- Test min/max value constraints
- Test multiple series generation
- Test spread and noise parameters
- Test drop percentage for simulating missing data
- Test that tooltips are present and functional
These tests ensure the random walk configuration works end-to-end from
UI input to data rendering in panels.
* Grafana: Fix E2E tests for random walk configuration
Fix Playwright test selectors and assertions to work reliably:
- Use specific element IDs to avoid selector conflicts
- Remove flaky dropPercent check from rendering test (covered separately)
- Simplify test assertions to focus on functional verification
- All 7 tests now passing consistently
Tests verify: field rendering, min/max constraints, series count,
spread/noise configuration, drop percentage, and tooltips.
* Grafana: Add advanced E2E tests for random walk
Add two additional tests for better coverage:
- Test configuration value persistence across interactions
- Test that series count actually generates the expected number of series
These tests verify deeper functionality beyond basic UI rendering,
ensuring the random walk feature works correctly end-to-end.
All 9 tests passing consistently (20.1s runtime).
* Grafana: Remove redundant Min/Max tooltips
Remove tooltips from Min and Max fields that just repeated the label text.
These fields are self-explanatory and don't need tooltip icons.
Keeps the UI cleaner while maintaining helpful tooltips on fields that
actually benefit from explanation (Series count, Start value, Spread,
Noise, Drop %).
* Grafana: Add CODEOWNERS entry for random walk E2E tests
Add codeowner assignment for the new grafana-datasource-random-walk.spec.ts
test file to @grafana/grafana-frontend-platform, matching the ownership of
the Grafana datasource code.
* Add dashboardTemplates feature toggle and put new changes behind this toggle to limit impact
* Grafana: Add unit tests for dashboardTemplates feature toggle
Add unit tests to verify RandomWalkEditor renders correctly based on
the dashboardTemplates feature toggle:
- Test that random walk editor renders when FF is enabled
- Test that random walk editor is hidden when FF is disabled
These tests ensure the feature toggle works as expected and prevents
the random walk configuration UI from appearing when the feature is disabled.
* revert previous codeowners change as not necessary
* Grafana: Remove redundant E2E test for feature flag disabled
Remove E2E test for dashboardTemplates feature flag disabled scenario
since it's already covered by unit tests and E2E environment can't
reliably control server-side feature flags.
Feature flag behavior is properly tested in QueryEditor.test.tsx unit tests.
E2E tests focus on functional validation when the feature is enabled.
* fix lint
* Integrate mt querier with query caching
* typo
* let the caller set cache status response header
* fix TestQueryAPI
* make gen-go
* handle CachingServiceClient being nil and make gen-go
* include namespace in cache key
* set signed in user namespace in query_test.go
* fix test
* remove commented out code
* undo services/query/query.go changes
* make gen-go
* remove namespace requirement
* fix tests
* fix test
* remove namespace from SignedInUser in tests
* make gen-go
* SaveProvisionedDashboardForm: Show preview banner when pushing to non-configured existing branch
* useProvisionedRequestHandler: use ref to prevent handler triggered twice
* refactor ungroup
* deleting last row/tab no longer ungroups
* Change test for deleting last row to not test for ungroup
* fix comment with correct pull request
* use isLayoutGroup instead
* fix implementations
* missing import
* feat: Improve prompt for open assistant
Existing prompt is not specific enough and uses a new visual tool, which will result in taking a screenshot to analyze the flame graph.
* Apply suggestion from @cyriltovena
less instructions for now.
---------
Co-authored-by: Cyril Tovena <cyril.tovena@gmail.com>
When creating silences in remote Alertmanager instances, all 4xx errors were treated as 500s.
This change ensures that 4xx errors are properly surfaced as bad payload errors, allowing callers to handle them appropriately.
* Add delete and update hooks for roles/core roles
no need to capture non reference types
small cleanup on vars
* fix ticket priming in hooks
* fix ticket priming in hooks
* Revert "fix ticket priming in hooks"
This reverts commit f8e953ca09.
* use old testing blocks
* protect runtime obj in go func
* update test for correctness
* separate files for test correctness. fix leaking goroutines in go tests
* go workspace fixes
* attribute owner
* clean up go mod
* [API Server] Add Example App for reference use.
* Remove Printlns.
* Upgrade app-sdk to v0.46.0, update apps to handle breaking changes.
* Only start the reconciler for the example app if the v1alpha1 API version is enabled.
* Some comment doc updates.
* Run make update-workspace
* Set codeowner for /apps/example
* Run make gofmt and make update-workspace
* Run prettier on apps/example/README.md
* Add COPY apps/example to Dockerfile
* Add an authorizer to the example app.
* Fix import ordering.
* Update apps/example/kinds/manifest.cue
Co-authored-by: Owen Diehl <ow.diehl@gmail.com>
* Run make update-workspace
* Re-run make gen-go for enterprise import updates
* Run make update-workspace
---------
Co-authored-by: Owen Diehl <ow.diehl@gmail.com>
- Added gms_pure_go build tags to disable cgo - (cgo was added to GMS since we last updated it)
- Docs note on regex limitations
---------
Co-authored-by: Matheus Macabu <macabu.matheus@gmail.com>
* StateTimeline: E2E tests for basic rendering, no data, and tooltip interactions
* Add tests for StateTimelineTooltip sub-component
* Remove unused import from state-timeline.spec.ts
* updates from PR review
* create navigateToAlertFormSchemaApi in restrictedGrafanaApis and use it in formDefaults.ts
* update alertingSchemaApi
* fix test
* move alertingSchemaApi.ts and the alerting section in README.md to a new alerting folder
* move cloud rules form schema outside restrictedGrafanaApis
* remove cloud fields in schema and use values from existing enums for some fields
* refactor RestrictedGrafanaApisContextTypeInternalenrichment type adding a high level entry for alerting
* refactor: change naming and come back to one single level in the RestrictedGrafanaApisContextType
* update README.md
* Fix inconsistency in command instructions between the Backend and Frontend section.
* Increase ulimit advice.
On a bare system I'm getting almost 6200 files from the given `find` command.
It's clear that this project has grown considerably since this line was added
to the onboarding docs.
* starting grafana is not explained in the devenv readme.
* AccessControl: Include hidden roles in service account role fetches
Add includeHidden=true parameter to role API calls to ensure service accounts
with hidden roles assigned properly display those roles in the UI.
Previously, service accounts with only hidden roles would appear to have no
roles assigned in the UI, even though the API showed they had roles when
queried with includeHidden=true.
This change affects both:
- Bulk role fetching for the service accounts list
- Individual user role fetching used by the role picker
* format
* Add enterprise hooks
* wip...
* undo
* update wire gen
* remove old hook thing
* move build info into seperate func
* align fs context middleware with grafana, setting SignedInUser
* Call IndexDataHooks to get modified build info
* update tests
* go workspace
* idk, reset workspace files or whatever
* conditionally mount license
* support loading decoupled plugins from cdn
---------
Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
* ProgressBar: progressbar nodes must have accsible name fix
* BrowseActions: Bulk move and delete drawwer a11y fix
* FolderActionsButton: Move and delete drawer a11y fix
* ConfigForm: a11y fix missing id
* GettingStarted: Skip img alt since its decorative
* JobContent: heading a11y fix
* StatusBadge: add displayOnly prop to avoid cursor pointer display when its not necessary
* RepositoryTypeCards: Card missing discernible text
* i18n
* input id fix
* wip
* wip
* wip
(cherry picked from commit 8cedf25892)
* Search seems to be working, the validation is still wip
* Use keyword.Name analyzer for Filterable fields
* Only string fields should be indexed with keyword analyzer
* Change search query for email and login fields to use term query
* Remove unnecessary Exact from the resource protobuf definitions
Co-Authored-By: Ryan McKinley <ryantxu@gmail.com>
* Add legacy search support to the API
* Tests for legacy search, validate and integration tests for user
* Lint
* Add snapshot tests to userDocumentBuilder
* Address CodeQL issues
* Improvements, handle Mode2, tests should pass
* Change default limit from 0 to 1 for requests
* Cleanup
* Add fixme
* Update pkg/registry/apis/iam/register.go
Co-authored-by: Stephanie Hingtgen <stephanie.hingtgen@grafana.com>
* Update pkg/registry/apis/iam/user/legacy_search.go
Co-authored-by: Stephanie Hingtgen <stephanie.hingtgen@grafana.com>
---------
Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
Co-authored-by: Stephanie Hingtgen <stephanie.hingtgen@grafana.com>
* implement the update method for team bindings
* fix lint error
* add integration tests
* add integration test for non existing team binding
* try to fix lint error
As part of migrating Grafana's authorization system to Zanzana (OpenFGA), we need to ensure that role permissions defined in the IAM API are automatically synced to the authorization backend. Without this sync, roles created through the API would not be enforced by Zanzana, creating an inconsistency between defined permissions and actual authorization decisions.
This is a critical piece of the dual-write pattern during the migration to Zanzana, ensuring that:
Role permissions are immediately available for authorization checks
The legacy RBAC system and new Zanzana system remain in sync
Users experience consistent permission enforcement regardless of which backend is queried
safe to revert
* Skip informers if Provisioning disable controllers is enabled
* Hydrate requester correctly for Grafana Live
* revert to old code because eventualRestConfig provider issues
---------
Co-authored-by: Charandas Batra <charandas.batra@grafana.com>
* Coverage: Add some DX improvements to by codeowner script
* Potential fix for code scanning alert no. 3796: Shell command built from environment values
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
* Potential fix for code scanning alert no. 3797: Shell command built from environment values
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
* fix package.json and yarn lock
* reorder imports
* fix issue for frontend-platform: exclude files in any /test/ dir
* wip
* add ora spinner for codeowners manifest step
* cleanup
---------
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
* fix: SQLite truncate with retry/backoff on busy/locked errors
* fix: use retryer package for retrying SQLite TruncateDBTables
* fix: use dskit/backoff package to return last error
* fix: do not log number of attempts
* go get github.com/grafana/grafana-plugin-sdk-go@v0.281.0
* make update-workspace
* updated failing unit test
* disable deprecation warnings
* datasources: allow underscore-prefixed local time range
* updated go.work.sum
* [APIServer] Add the method RegisterAPIInstaller to the APIRegistrar interface, and implement it in the builder. This allows new installer-based apps to register themselves in enterprise.
* Rename RegisterAPIInstaller to RegisterAppInstaller
* NewGauge: Fix segmented gauge with min value != 0
* update gdev dashboard to exercise case
* update gdev dashboard with panel to exercise
* update
---------
Co-authored-by: Paul Marbach <paul.marbach@grafana.com>
This is because MySQL doesn't support storing of NaN valuels, and therefore go-mysql-server isn't going to either.
Float fields/columns are always mapped to be nullable now, otherwise we would have to replace NaN/Inf with 0.
Hide error notifications in kiosk mode on dashboards
Suppress error alerts when dashboard is viewed in kiosk mode
Kiosk mode is typically used for TV displays without interaction
Other notification types (success, warning, info) remain visible
---------
Co-authored-by: Tom Ratcliffe <tom.ratcliffe@grafana.com>
* Redirect to first available dashboard on select
* Check currently active url before redirecting
* Expand currently selected group on selection
* Add unit test
* Test group expansion on URL change
* Don't expand any group if the active item is already in an expanded one
* Mock dashboardsService better
* Fix linitng issue
* Add and remove subscrioption based on open state
* Extract scope navigation utils
* Fix import order
* Fix import path
* Add redirection tests to ScopesSelectorService
* Fix import order
* add check for prom dep auth check in grafana advisor
* remove non prom DS
* clean up and add grafana docs links
* lint
* tests
* Apply suggestions from code review
Co-authored-by: Andres Martinez Gotor <andres.martinez@grafana.com>
* Thank you for your great feedback @andresmgot
* caching now resets on refresh. also check if plugin is installed
* remove unused errors
* add steps back sigh
* make naming clearer
---------
Co-authored-by: Andres Martinez Gotor <andres.martinez@grafana.com>
Dashboard Migration: Fix v38 table panel overrides migration when defaults.custom is missing
The v38 migration was incorrectly skipping field config overrides processing
when fieldConfig.defaults.custom didn't exist. This caused custom.displayMode
properties in overrides to not be migrated to the new custom.cellOptions format.
The fix ensures migrateOverrides is always called for table panels, regardless
of whether defaults.custom exists.
Added comprehensive unit test covering this edge case to prevent regression.
Issue discovered through comprehensive migration testing infrastructure.
Fix v16 grid position calculation for fractional spans
Match frontend span-to-width conversion logic by flooring span first,
then multiplying by width factor, instead of multiplying first then flooring.
This fixes dashboard layout inconsistencies where panels with fractional
spans (e.g. 5.929860088365242) would have different widths between
backend and frontend migration paths.
- Backend old: Math.floor(5.93 * 2) = Math.floor(11.86) = 11
- Backend new: Math.floor(5.93) * 2 = 5 * 2 = 10 (matches frontend)
Includes comprehensive unit test to prevent regression.
* community contributions: update developers/contribute.md
* fix links
* guidance on comm channels
* changed order in no code contrib
* modifed help wanted label
* community: detail tech contributions section
* detailed tech contribution sections
* changed items in step by step
* modified list items
* formated sections
* added section for issues
* format-sections
* added-link
* prettier
* added guidance on comm channels
* Update CONTRIBUTING.md
Added "making technical contributions, with or without code" section in the introductory part to improve the flow of information
* header and link to github
* all pretty no pity
* Update CONTRIBUTING.md
Fixed formatting to avoid Prettier issues again
* changed order of items
* added links
* Update CONTRIBUTING.md
Co-authored-by: Simon Prickett <simon@crudworks.org>
* Update CONTRIBUTING.md
Co-authored-by: Simon Prickett <simon@crudworks.org>
* Update CONTRIBUTING.md
Co-authored-by: Simon Prickett <simon@crudworks.org>
* Update CONTRIBUTING.md
Co-authored-by: Simon Prickett <simon@crudworks.org>
* removed ordered list
---------
Co-authored-by: ewamag <eva.magiera@gmail.com>
Co-authored-by: Simon Prickett <simon@crudworks.org>
* Add rule index as a part of the rule matching process
* Refactor rule matching to use a dedicated RulePositionHash type
- Introduced a new `rulePositionHash.ts` file to define a branded type for rule positions.
- Updated rule matching logic to utilize the new `createRulePositionHash` function for generating rule position hashes.
- Adjusted related components and tests to ensure consistent handling of rule indices and positions.
* Docs: Add contact point specific text formatting examples to notification templates
* Add Slack formatting examples with *bold* and _italic_ syntax
* Clarify that text formatting depends on contact point type
* Docs: Add contact point specific text formatting examples to notification templates
* Reflect review that fix docs
* migrate to v2
* Fix tests
* graphite panels should be auto-migrated
* lint
* Provisioning: Fix dashboard export to preserve original API version
* Add error handling for the edge case where conversion fails but no
storedVersion is available.
* add /-/fe-boot-error endpoint to track errors starting the frontend service
* use promauto package
* move metric to root
* check error of r.Body.Close()
* Convert unique keys in file and file_meta tables into primary key.
* Fix panic.
* Fix comment.
* Always add migration to drop auto-generated PK.
* Drop and create PK for mysql in single statement.
* Drop my_row_id column too. (Please drop primary key column to be able to drop generated invisible primary key.)
* Annotations: Honor dashboardUID on dashboardsWithVisibleAnnotations
Signed-off-by: Maicon Costa <maiconscosta@gmail.com>
---------
Signed-off-by: Maicon Costa <maiconscosta@gmail.com>
* implement create method for team bindings
* generate openapi specs
* enable dual writer for team bindings
* add validation rules
* generate openapi
* add integration tests and fix remaining issues
* fix validation test
* use UIDs instead of IDs to build team binding name
* use IDs when generating the TeamBinding name
* fix build error
* remove time truncate
* Remove default creator can Admin permissions for folders
* Actually, we only need to set permissions for root level folders
* Put back creator permission
* linting
* use FT for assessing what permissions to set
* fix tests
* migrate to v19
* migrate to v18
* Migration to be verified: v17 Convert minSpan to maxPerRow in panels
* Migration to be verified: 16 Grid layout migration
* Refactor v17 and v19 migrations to use shared helper functions
* Migration to be verified: 15 No-op migration for schema consistency
* Migration to be verified: 14 Shared crosshair to graph tooltip migration
* cleanup
* wip
* complete migration
* fix lint issues
* refactor and test with minimal graph config
* update tests
* migrate to v12
* extract defaults outside the func
* lint
* lint
* add missing showValues prop
* migrate to v11
* migrate to v10
* add test files
* update
* migrate to v9
* migrate to v8
* add context and fix latest version
* add context
* add context
* generate snapshots
* v13 should be no-op
* clean up
* fix tests
* add context
* snapshots
* generate snapshots
* update
* snapshots
* wip
* fix test
* remove nav when cleaning up defaults
* migrate to v6
* update comments
* migrate to v5
* remove v28
* remove singlestat migraiton from frontend migrator because this is an automigration
* remove unused function
* Remove v24 table plugin logic
* cleanup
* remove plugin version for automigrate as it was used only in v24 and v28 that have been removed
* cleanup
* update snapshot
* update snapshot
* update snapshot
* update snapshot
* update snapshot
---------
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
* migrate to v19
* migrate to v18
* Migration to be verified: v17 Convert minSpan to maxPerRow in panels
* Migration to be verified: 16 Grid layout migration
* Refactor v17 and v19 migrations to use shared helper functions
* Migration to be verified: 15 No-op migration for schema consistency
* Migration to be verified: 14 Shared crosshair to graph tooltip migration
* cleanup
* wip
* complete migration
* fix lint issues
* refactor and test with minimal graph config
* update tests
* migrate to v12
* extract defaults outside the func
* lint
* lint
* add missing showValues prop
* migrate to v11
* migrate to v10
* add test files
* update
* migrate to v9
* migrate to v8
* add context and fix latest version
* add context
* add context
* generate snapshots
* v13 should be no-op
* clean up
* fix tests
* add context
* snapshots
* generate snapshots
* update
* snapshots
* wip
* fix test
* remove nav when cleaning up defaults
* migrate to v6
* update comments
* remove v28
* remove singlestat migraiton from frontend migrator because this is an automigration
* remove unused function
* Remove v24 table plugin logic
* cleanup
* remove plugin version for automigrate as it was used only in v24 and v28 that have been removed
* cleanup
* update snapshot
* update snapshot
* update snapshot
* update snapshot
* remove test
---------
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
* Add basic drawers for rules and instances
* Add query visualization for instances
* Display threshold on graphs when available
* Add basic history state transitions
* Query and annotations chart for alert instance
* Use SceneDataNode to merge query and annotations
* Split drawer components into more files
* move the drawer to the workbench so we can persist its state with
pagination
updates the drawer contents to align closer to what we have for the
detail view
* Don't collapse summary on empty values
* Improve data loading in InstanceDetailsDrawer
* Refactor history data conversion
* Tidy up state history data conversion
* Replace rule name link with a dedicated drawer button
* remove filter text
* Improve history time series handling
* Improve rule details header
* Update translations
* Use custom filter function for instance series filtering
* Fix instances matching algorithm
* make very long rule names span multiple rows
---------
Co-authored-by: Gilles De Mey <gilles.de.mey@gmail.com>
* docs: add comprehensive dashboard migration documentation
- Add detailed schema version migration guide with step-by-step instructions
- Reorganize main migration README to focus on conversion-level practices
- Add monitoring section with metrics, logging, and error handling
- Include comprehensive testing strategies for backend and frontend
- Provide clear separation between conversion practices and implementation details
* chore: update .gitignore
* Update .gitignore
* change parsing to allow binary expression as long as it is not between two number literals
* add clamp function to monaco editor so it can be highlighted
* remove warning being thrown for binary operations
* modify parsing logic to respect the order of binary operations
* fix logic for when to increment offset for binary operations
* fix typo in comment
* Update packages/grafana-prometheus/src/querybuilder/parsing.ts
Fix typo in comment
Co-authored-by: ismail simsek <ismailsimsek09@gmail.com>
---------
Co-authored-by: ismail simsek <ismailsimsek09@gmail.com>
* Dashboards: Add restricted extension point for empty state
* FeatureToggles: Regenerate files with new toggle
* Dashboards: Pass default empty UI as component, not children
* Dashboards: Expose hooks for empty state methods to extensions
* Dashboards: Move empty state button hooks to dedicated file
* Dashboards: Render loader while empty state plugin components loading
* Dashboards: Pass empty state default UI as method
* Dashboards: De-duplicate hook usages in empty state
* Dashboards: De-duplicate read-only repo check in empty state
* migrate to v19
* migrate to v18
* Migration to be verified: v17 Convert minSpan to maxPerRow in panels
* Migration to be verified: 16 Grid layout migration
* Refactor v17 and v19 migrations to use shared helper functions
* Migration to be verified: 15 No-op migration for schema consistency
* Migration to be verified: 14 Shared crosshair to graph tooltip migration
* cleanup
* wip
* complete migration
* fix lint issues
* refactor and test with minimal graph config
* update tests
* migrate to v12
* extract defaults outside the func
* lint
* lint
* add missing showValues prop
* migrate to v11
* migrate to v10
* add test files
* update
* migrate to v9
* migrate to v8
* add context and fix latest version
* add context
* add context
* generate snapshots
* v13 should be no-op
* clean up
* fix tests
* add context
* snapshots
* generate snapshots
* update
* snapshots
* wip
* fix test
* remove nav when cleaning up defaults
* remove v28
* remove singlestat migraiton from frontend migrator because this is an automigration
* remove unused function
* Remove v24 table plugin logic
* cleanup
* remove plugin version for automigrate as it was used only in v24 and v28 that have been removed
* cleanup
* update snapshot
* update snapshot
* update snapshot
* lint
---------
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
* migrate to v19
* migrate to v18
* Migration to be verified: v17 Convert minSpan to maxPerRow in panels
* Migration to be verified: 16 Grid layout migration
* Refactor v17 and v19 migrations to use shared helper functions
* Migration to be verified: 15 No-op migration for schema consistency
* Migration to be verified: 14 Shared crosshair to graph tooltip migration
* cleanup
* wip
* complete migration
* fix lint issues
* refactor and test with minimal graph config
* update tests
* migrate to v12
* extract defaults outside the func
* lint
* lint
* add missing showValues prop
* migrate to v11
* migrate to v10
* add test files
* update
* migrate to v9
* migrate to v8
* add context and fix latest version
* add context
* add context
* generate snapshots
* v13 should be no-op
* clean up
* fix tests
* add context
* snapshots
* generate snapshots
* update
* snapshots
* fix test
* remove v28
* remove singlestat migraiton from frontend migrator because this is an automigration
* remove unused function
* Remove v24 table plugin logic
* cleanup
* remove plugin version for automigrate as it was used only in v24 and v28 that have been removed
* cleanup
* update snapshot
* update snapshot
* update snapshot
---------
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
* migrate to v19
* migrate to v18
* Migration to be verified: v17 Convert minSpan to maxPerRow in panels
* Migration to be verified: 16 Grid layout migration
* Refactor v17 and v19 migrations to use shared helper functions
* Migration to be verified: 15 No-op migration for schema consistency
* Migration to be verified: 14 Shared crosshair to graph tooltip migration
* cleanup
* wip
* complete migration
* fix lint issues
* refactor and test with minimal graph config
* update tests
* migrate to v12
* extract defaults outside the func
* lint
* lint
* add missing showValues prop
* migrate to v11
* migrate to v10
* add test files
* update
* migrate to v9
* add context and fix latest version
* add context
* add context
* generate snapshots
* v13 should be no-op
* clean up
* fix tests
* add context
* snapshots
* generate snapshots
* update
* fix test
* remove v28
* remove singlestat migraiton from frontend migrator because this is an automigration
* remove unused function
* Remove v24 table plugin logic
* cleanup
* remove plugin version for automigrate as it was used only in v24 and v28 that have been removed
* cleanup
* update snapshot
* update snapshot
* update snapshot
---------
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
* Link to Grafana Pathfinder if available
Signed-off-by: Jack Baldry <jack.baldry@grafana.com>
* refactor: `getComponentIdFromComponentMeta()` only receives the title
* Making sure we pass helpNode without Parents to the pathfinder app.
* minor refactoring to isolate the code.
* Fix tests
Signed-off-by: Jack Baldry <jack.baldry@grafana.com>
* cleaned up the structure and exposing the helpNavItem via a hook
* added missing files.
* Add support for old and new pathfinder IDs
Signed-off-by: Jack Baldry <jack.baldry@grafana.com>
* Rename hook for consistency
Signed-off-by: Jack Baldry <jack.baldry@grafana.com>
---------
Signed-off-by: Jack Baldry <jack.baldry@grafana.com>
Co-authored-by: Levente Balogh <balogh.levente.hu@gmail.com>
Co-authored-by: Marcus Andersson <marcus.andersson@grafana.com>
* Update targeting key to namespace
* Pass eval ctx attributes to frontend
* Add context config to the frontend
* Fix OF namespace not defined in e2e tests
* Set default namespace and targeting key
* remove e2e server config now that namespace is default
---------
Co-authored-by: joshhunt <josh.hunt@grafana.com>
* spike
* Improvements
* Let users choose what grid to convert to
* fix lint
* make sure we don't get multiple undo entries when ungrouping. Also move cancel button
* updates from review
* Clear parent when merging default grid
* migrate to v19
* migrate to v18
* Migration to be verified: v17 Convert minSpan to maxPerRow in panels
* Migration to be verified: 16 Grid layout migration
* Refactor v17 and v19 migrations to use shared helper functions
* Migration to be verified: 15 No-op migration for schema consistency
* Migration to be verified: 14 Shared crosshair to graph tooltip migration
* cleanup
* wip
* complete migration
* fix lint issues
* refactor and test with minimal graph config
* update tests
* migrate to v12
* extract defaults outside the func
* lint
* lint
* add missing showValues prop
* migrate to v11
* migrate to v10
* add test files
* update
* add context and fix latest version
* add context
* add context
* generate snapshots
* v13 should be no-op
* clean up
* fix tests
* add context
* snapshots
* generate snapshots
* fix test
* remove v28
* remove singlestat migraiton from frontend migrator because this is an automigration
* remove unused function
* Remove v24 table plugin logic
* cleanup
* remove plugin version for automigrate as it was used only in v24 and v28 that have been removed
* cleanup
* update snapshot
* update snapshot
---------
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
* migrate to v19
* migrate to v18
* Migration to be verified: v17 Convert minSpan to maxPerRow in panels
* Migration to be verified: 16 Grid layout migration
* Refactor v17 and v19 migrations to use shared helper functions
* Migration to be verified: 15 No-op migration for schema consistency
* Migration to be verified: 14 Shared crosshair to graph tooltip migration
* cleanup
* wip
* complete migration
* fix lint issues
* refactor and test with minimal graph config
* update tests
* migrate to v12
* extract defaults outside the func
* lint
* lint
* add missing showValues prop
* migrate to v11
* add test files
* update
* add context and fix latest version
* add context
* add context
* generate snapshots
* v13 should be no-op
* clean up
* fix tests
* snapshots
* fix test
* remove v28
* remove singlestat migraiton from frontend migrator because this is an automigration
* remove unused function
* Remove v24 table plugin logic
* cleanup
* remove plugin version for automigrate as it was used only in v24 and v28 that have been removed
* cleanup
* update snapshot
* es lint
---------
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
* migrate to v19
* migrate to v18
* Migration to be verified: v17 Convert minSpan to maxPerRow in panels
* Migration to be verified: 16 Grid layout migration
* Refactor v17 and v19 migrations to use shared helper functions
* Migration to be verified: 15 No-op migration for schema consistency
* Migration to be verified: 14 Shared crosshair to graph tooltip migration
* cleanup
* wip
* complete migration
* fix lint issues
* refactor and test with minimal graph config
* update tests
* migrate to v12
* extract defaults outside the func
* lint
* lint
* add missing showValues prop
* update
* add context and fix latest version
* add context
* generate snapshots
* v13 should be no-op
* clean up
* fix tests
* fix test
* remove v28
* remove singlestat migraiton from frontend migrator because this is an automigration
* remove unused function
* Remove v24 table plugin logic
* cleanup
* remove plugin version for automigrate as it was used only in v24 and v28 that have been removed
* cleanup
* es int
---------
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
SQLite dialect now checks column existence via PRAGMA table_info, enabling
IfColumnNotExistsCondition to work correctly. Previously, BaseDialect returned
empty SQL, so AddColumn ran unconditionally and could fail with
“duplicate column name” under parallel CI runs.
- Prevents duplicate-column errors in SQLite migrations (e.g. unified storage
adding previous_resource_version) when migration locking/logging don’t serialize
execution.
- No change for other dialects.
* name field must match either k8s regex or grafana legacy uid regex. Adds tests.
* moves invalid test to being valid
* uses new US naming validation for kv store validation
* fix function name and update key regex
* fix comment
* use correct errs var
* updates kv key tests
* migrate to v19
* migrate to v18
* Migration to be verified: v17 Convert minSpan to maxPerRow in panels
* Migration to be verified: 16 Grid layout migration
* Refactor v17 and v19 migrations to use shared helper functions
* Migration to be verified: 15 No-op migration for schema consistency
* Migration to be verified: 14 Shared crosshair to graph tooltip migration
* cleanup
* wip
* complete migration
* fix lint issues
* refactor and test with minimal graph config
* update tests
* extract defaults outside the func
* lint
* lint
* add missing showValues prop
* add context and fix latest version
* generate snapshots
* v13 should be no-op
* clean up
* remove v28
* remove singlestat migraiton from frontend migrator because this is an automigration
* remove unused function
* Remove v24 table plugin logic
* cleanup
* remove plugin version for automigrate as it was used only in v24 and v28 that have been removed
* cleanup
---------
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
* Use timestamps reported via GetResourceLastImportTimes to trigger index rebuilds.
* Add test for old last import time.
* Don't reindex after bulk-import. It is now done indirectly via LastImportTime on all instances that own the index.
* feat: add schema changes for a switch type of dashboard variable
* fix: generated go
* feat: add support for a switch type of dashboard variable
* chore: update `@grafana/scenes` to a canary version
* feat: add variable editor for the switch variable
* fix: remove unnecessary jest config change
* chore: remove commented out code
* LastImportTime for resource.
* Make StorageBackendImpl implement GetResourceLastImportTimes
* More missing implementations of GetResourceLastImportTimes
* Fix import.
* Skip TestGetResourceLastImportTime in TestBadgerKVStorageBackend.
* Implement GetResourceLastImportTimes by mockStorageBackend
* Bump test tolerance.
* Fix postgres query and timezone.
* Fix postgres query and timezone.
* Make linter happy.
* add basic theme-playground page
* basic theme playground
* generate schema
* sort of include the schema
* proper json schema
* add base theme
* bit of tidy up
* don't use appEvents.emit
* tidy up ThemeDemo
* extract translations
* add CODEOWNERS
* feat(script): generate a source file x teams manifest from CODEOWNERS
* feat(script): unit tests + coverage report only for files owned by team
* feat(script): calculate CODEOWNERS metadata
* refactor(script): export a pure codeowners manifest generation function
* refactor(script): export a pure test coverage by team function
* refactor(script): generate raw JSONL codeowners data from Node.js script
* feat(script): put codeowners manifest all together in one script
* refactor(scripts): group consistently with NPM script name
* refactor(scripts): deduplicate constants for file paths etc.
* refactor(scripts): make console output cute 💅✨
* refactor(tests): make coverage by "owner" directory more human readable
* refactor(scripts): use consistent naming "codeowner" instead of "team"
* chore(codeowners): mark DataViz as owners of scripts for now
* chore(todo): leave a note where coverage metrics should be emitted later
* fix(gitignore): ignore root codeowners-manifest directory not scripts/*
* refactor(script): rename manifest to generate for clarity
* docs(readme): add a brief README describing new scrips
* chore(linter): ignore temporary files in prettier, fix whitespace format
* refactor(script): simplify Jest config by using team files list directly
* refactor(script): simplify script, partition sourceFiles and testFiles
* refactor(script): simplify and parallelize manifest write operations
* fix(script): handle errors for JSONL line reader
* refactor(script): use Map instead of POJOs
* fix(script): handle errors when streaming raw JSONL output
* fix(script): add error handling, and use promise API for metadata check
* fix(reporter): suppress duplicate Jest CLI coverage report output
* refactor(script): simplify with fs promises API for consistency
* fix(script): error handling for cp spawn-ed process
* refactor(script): use Promise API for mkdir + exists
* refactor(script): use fs Promise API
* refactor(script): use fs Promise API
* fix(script): same allow list for sourceFilter and all Jest config rules
Co-authored-by: Paul Marbach <paul.marbach@grafana.com>
* fix(script): bust cache when new files are created also
---------
Co-authored-by: Paul Marbach <paul.marbach@grafana.com>
* started new configure doc
* updates to the configure doc
* worked on variables doc
* made edits
* query editor edits
* query editor updates
* continued with updates
* added updates
* additional updates, rewrite of auth doc
* finished query editor updates
* cleaned up the intro doc, added ref URIs to other docs
* some final edits
* more edits prior to PR creation
* ran prettier, added a screenshot
* linter fixes
* updates based on questions doc
* ran prettier
* updates based on feedback
* made more edits based on feedback
* more updates based on feedback
* updates based on feedback
* moved alerting under logs
* ran prettier
* Docs: Add a note about email being required and the usage of sub claim
* Update docs/sources/setup-grafana/configure-security/configure-authentication/generic-oauth/index.md
Co-authored-by: Misi <mgyongyosi@users.noreply.github.com>
---------
Co-authored-by: Misi <mgyongyosi@users.noreply.github.com>
* remove unused compat functions
* update to alerting module from pr
* replace IntegrationConfig with IntegrationSchemaVersion
* safely resolve a string into integration type
* change usages of integration config
* WIP column layout
* add columns on top of splitter
* small layout fixes
* WIP grouped items
* WIP
* WIP
* WIP
* small refactoring
* some more WIP
* WIP
* refactoring some functions
* use "unknown" state intstead of assuming "normal" state
* Add groupBy filter
* Add label-based filter
* Add basic displaying of grouped data
* lint
* Fix timeline alertstate selection
* Add AlertInstanceScene for displaying instances
* Add WorkbenchContext to pass column width and domain deeper into the tree
* Update single rule query, merge pending and firing metrics into one instance
* use area chart for summary
* Add not working rule summary
* step interpolation for summary chart
* Add rule state chart
* Update panel settings for alert rule summary
* Reactify SummaryChart component
* WIP react version
* Reactify AlertRuleDetails component
* Reactify AlertRuleSummary component
* refactor summary chart a bit
* clean up – Reactify
* set min y-scale for rule summary
* remove macro code
* small fixes
* remove line width for summary
* attempt to make the instances a native chart
* native chart for instances part 2
* sync cursor crosshair
* extract instance row into separate component
* Add minHeight for rows without labels
* Add Summary component
* Move scrolling to rows container
* Add lazy rendering of rows
* Use default page size
* minor layout tweaks
* typescript fixes
* simplify the grouping / data frame processing
* big cleanup of code
* split up rows components
* further split row components
* moving files around
* use text summary stats
* link to alert rule
* various eslint and typescript fixes
* do not compute common labels for single series
* small UI updates
* add depth support and colored labels
* simplify with props type
* Reuse Workbenck query to populate alert rule summaries
* add custom folder row component and set as default
* small UI tweaks
* remove unused sticky
* Hide triage page behind a feature toggle
* Add loading states to workbench and alert rows
* Update translations
* ✨
* Fix lint errors
* Fix EditorColumnHeader rendering, remove unused code
* Update translations
* Move EditorColumnHeader to shared components directory
* add type string for union discrimination of row
---------
Co-authored-by: Konrad Lalik <konradlalik@gmail.com>
* devenv: fix volumes section when sources don't contain one
* wip
* Working correctly with improvedExternalSessionHandling on
* Remove not needed lines
* Working with the old flow, tests
* Handle compatibility with the feature toggle, tests wip
* Tests
* Cleanup
* Address feedback
* Align tests
* Add comment
* Fix issue with session removal after the invalidation of tokens
* Remove commented out code
* clean up
* initial basic OpenFeature client for datasource class
* add dep
* update, use a wrapping function to enforce types
* move init OF to grafana-runtime
* docs
* Fix circular dependency causing tests to fail
* codeowners
* use toggle in datasourcewithbackend
* Fix CUJs group-by test
* Comments
* update docs, make default value mandatory
* revert using for queryServiceFromUI toggle
Fix span: 0 bug and panel ordering in v16 dashboard migration
Fix span: 0 handling to match frontend behavior by defaulting to DEFAULT_PANEL_SPAN.
Fix panel ordering issue by using stable sort instead of unstable sort.
Fix collapsed property handling to only set when input row has collapse property.
Add comprehensive test cases for span: 0 bug and collapsed property behavior.
Add sanitized test input file for span: 0 demo dashboard with generic values instead of internal Grafana infrastructure references.
All backend migration tests and frontend comparison tests pass.
* Don't update index more often than specified index_min_update_interval.
* Add artificial sleep at the end of write operations.
* Improve test: check for number of update calls, make diff check less flaky.
* Make test less flaky by allowing for higher diff variance.
* Make test less flaky by allowing for expected update calls variance.
* Add tracing to feature flags service
* Apply review feedback
* Apply suggestion from @hairyhenderson
Co-authored-by: Dave Henderson <dave.henderson@grafana.com>
* Apply suggestion from @hairyhenderson
Co-authored-by: Dave Henderson <dave.henderson@grafana.com>
* Apply suggestion from @hairyhenderson
Co-authored-by: Dave Henderson <dave.henderson@grafana.com>
* Apply suggestion from @hairyhenderson
Co-authored-by: Dave Henderson <dave.henderson@grafana.com>
* Apply suggestion from @hairyhenderson
Co-authored-by: Dave Henderson <dave.henderson@grafana.com>
* Apply suggestion from @hairyhenderson
Co-authored-by: Dave Henderson <dave.henderson@grafana.com>
* Fix issues
---------
Co-authored-by: Dave Henderson <dave.henderson@grafana.com>
* everything compiles
* tests pass
* remove file included by accident
* add entry to gitignore
* some scaffolding for the migration executor
* remove file
* implement and test the migration
* use xkube.Namespace in our interfaces
* add todo
* update wire deps
* add some logs
* fix wire dependency ordering
* create tests to validate error conditions during migrations
* Don't error on recording rules without conditions
The provisioning model doesn't include conditions for recording rules.
Only return an error for a missing condition if the rule isn't a
recording rule.
Also, added a test case to show the failure.
This resolves#109398
* Run `go fmt` to fix whitespace issues
Migrate `spec.title` and `spec.name` fieldSelectors to use base64URL
encoded `metadata.name` selectors since the `spec` properties aren't
indexed and no longer searchable in the new app platform API.
* update alerting module
* replace compat with ones from alerting
* update type references Receiver and Integration to *Status
* update route in provisioning test that is invalid after recent change
* use right type for LINE ingtegration
* implement team update in legacy store
* add unit tests
* add integration test
* set permissions for user in integration tests
* add more integration tests for update
* update validations
* add unit tests for ValidateOnUpdate() func
* fix integration test
* docs(alerting): add settings for alert evaluation backoff retries
* docs(alerting): add mention of backoff settings on the Error state docs
* fix vale prose
s/time_series/timeseries and change from underscores to hyphens in numeric and ts types
This makes it more consistent with the other timeseries kind strings
* Revert "Alerting: Generate simplified routing routes with old fingerprint function (#111893)"
This reverts commit 0da9d49896.
* Add alertingUseNewSimplifiedRoutingHashAlgorithm flag
* Alerting: Add feature toggle to use the old simplified routing hash generation
Handle HTML response for functions endpoint
- If the endpoint starts with < return an error
- Update tests
- Catch error in FE and use default functions
* disable cgo by default for local builds, also set cgo variable in either case
* actually do not set the default value
* disable cgo for darwin, display sqlite driver in logs
* fix linter warning, although I do not fully agree with it
* Add feature flag for multiple scopes endpoint usage
* Add method to API client for fetching multiple ScopeNodes at the same time
* Add parent title to tree
* Get nodes from cache too
* Update test with new functionality
* Update test
* Fix linting issue
* Remove unapplied scope parents
* Recusively load nodes, and insert into tree
* Remove console.logs
* Simply functions
* Always show recent scopes category
* Fix issues with parent node remaining in URL
* Always display recent scopes
* Make sure chdilren are loaded when collapsing
* Add test cases for expanded items and imrpove a11y markup
* Remove recent scopes always showing and update tests
* Fix linting issue
* Move insertPathNodesIntoTree to treeUtils
* Add test for insertPathNodesIntoTree
* Remove comment
* also disable incremental querying when the dashboard is public
* add tests for disabling incremental querying if public dashboards are being used
* move public dashboard check earlier
* adding some logs to better understand what might be happening
* only focus this PR on improve logging in finalizer handling
* debug log before calling finalizers
* working on finalizers
* removing last todos, adding unit tests
* better use SupportedFinalizers name
* addressing comments
* wip: fix tests and add delete error in status
* chore: codegen
* chore: codegen openapi
* Merge remote-tracking branch 'origin/main' into provisioning-finalisers-fix-2
* update frontend client
* fix: errors in testing
* fix: breaking test
---------
Co-authored-by: Daniele Ferru <daniele.ferru@grafana.com>
Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
- Fix metricEditorMode logic to match frontend hasOwnProperty behavior
- Fix metricQueryType to only set when property doesn't exist
- Fix statistics processing to handle all types like frontend does
- Fix null statistic handling to match frontend behavior
- Fix object string representation to match JavaScript behavior
- Add comprehensive test coverage for all CloudWatch migration scenarios
- Achieve 100% backend-frontend consistency for v34 migration
* Fix v34 CloudWatch migration backend-frontend inconsistencies
- Fix metricEditorMode logic to match frontend hasOwnProperty behavior
- Fix metricQueryType to only set when property doesn't exist
- Fix statistics processing to handle all types like frontend does
- Fix null statistic handling to match frontend behavior
- Fix object string representation to match JavaScript behavior
- Add comprehensive test coverage for all CloudWatch migration scenarios
- Achieve 100% backend-frontend consistency for v34 migration
* Improve v34 CloudWatch migration test coverage
- Add targeted tests for hasOwnProperty logic coverage
- Add comprehensive getSuffixForStat coverage (all data types)
- Add generateNextRefId double letter generation tests
- Simplify test cases while maintaining full coverage
- Achieve 93%+ coverage on all critical v34 functions
- Remove redundant test cases for better maintainability
* Clean up v34 CloudWatch migration code
- Remove unnecessary comments and documentation
- Simplify function signatures and logic
- Maintain functionality while improving readability
- Keep essential logic intact with cleaner code
* Only remove unnecessary comments
What is this feature?
This PR implements a jitter mechanism for periodic alert state storage to distribute database load over time instead of processing all alert instances simultaneously. When enabled via the state_periodic_save_jitter_enabled configuration option, the system spreads batch write operations across 85% of the save interval window, preventing database load spikes in high-cardinality alerting environments.
Why do we need this feature?
In production environments with high alert cardinality, the current periodic batch storage can cause database performance issues by processing all alert instances simultaneously at fixed intervals. Even when using periodic batch storage to improve performance, concentrating all database operations at a single point in time can overwhelm database resources, especially in resource-constrained environments.
Rather than performing all INSERT operations at once during the periodic save, distributing these operations across the time window until the next save cycle can maintain more stable service operation within limited database resources. This approach prevents resource saturation by spreading the database load over the available time interval, allowing the system to operate more gracefully within existing resource constraints.
For example, with 200,000 alert instances using a 5-minute interval and 4,000 batch size, instead of executing 50 batch operations simultaneously, the jitter mechanism distributes these operations across approximately 4.25 minutes (85% of 5 minutes), with each batch executed roughly every 5.2 seconds.
This PR provides system-level protection against such load spikes by distributing operations across time, reducing peak resource usage while maintaining the benefits of periodic batch storage. The jitter mechanism is particularly valuable in resource-constrained environments where maintaining consistent database performance is more critical than precise timing of state updates.
* Rename this heading to match the link in 'Request Initiation'
* Fix link to 'Configure SAML using the Grafana configuration file' and make the link text match
* datasource(postgresql): add support of pgpass file
* remove `required` label for password field
* set `runPostgresTests` back to false
* fix after merge conflict
* add pgx_test
* set `runPostgresTests` back to `false`
* Add `no password` test case to the `pgx_test.go` as well
* fix `postgres_pgx_test.go`
* Update datasource docs
* docs wording
* docs: `datasource` -> `data source`
* Update docs/sources/datasources/postgres/configure/_index.md
Co-authored-by: Zoltán Bedi <zoltan.bedi@gmail.com>
* run prettier - docs
---------
Co-authored-by: Zoltán Bedi <zoltan.bedi@gmail.com>
* update tests to assert against snapshot
* remove channel_config package replaced by schemas from alerting module
* update references to use new schema
* implement delete in team API
* add unit tests for legacy sql
* add integration tests
* remove comment
* remove org_id from delete team sql command
* fetch team ID before deleting it
* feat(plugins): externalise jsx-runtime to prevent plugins bundling separate versions
* feat(plugins): provide react/jsx-dev-runtime to plugins to prevent prod only bugs
There was a [fix](https://github.com/grafana/grafana-google-sdk-go/pull/17) for lock in grafana-google-sdk-go v0.4.2.
It has not been incorporated in grafana core yet, and is causing
incidents:
#incident-2025-09-24-prod_us_central_0_google_monitoring_errors
* Modify index eviction mechanism such that unowned indexes are also evicted.
* Propagate OwnsIndex function to bleve backend
Fix tests.
Stop eviction goroutine when stopping backend.
Make linter happy.
Make sure we stop backend created by tests.
Review suggestion.
Removed newline.
* Add a CI step for checking app SDK codegen status
What
This commit adds a CI step for checking the status of code generated
with Grafana App SDK. The step fails if there is a git diff as a result
of the codegen step.
It also updates generated code to make sure we're starting from a
correct state.
Why
This ensures that when the schemas or the SDK version are updated, the
codegen mismatch is caught early at the PR stage.
Signed-off-by: Igor Suleymanov <igor.suleymanov@grafana.com>
* Format generated code
Signed-off-by: Igor Suleymanov <igor.suleymanov@grafana.com>
---------
Signed-off-by: Igor Suleymanov <igor.suleymanov@grafana.com>
* Use the new authorizer for the User resource
* Use accessClient
* Update pkg/services/authz/rbac/mapper.go
Co-authored-by: Gabriel MABILLE <gamab@users.noreply.github.com>
---------
Co-authored-by: Gabriel MABILLE <gamab@users.noreply.github.com>
[apiserver] Fix appinstaller.serverWrapper.RegisteredWebServices() to return the RegisteredWebServices from the underlying apiserver's Handler's GoRestfulContainer, matching the logic in grafana-app-sdk's apiserver.KubernetesGenericAPIServer
* migrate to new manifest format
* rename app to alerting.notifications to not conflict with rules
* disable custom field selectors as they are not supported in appinstaller
* feat(investigations): add "Investigations" menu if loop enabled
* feat(investigations): move to `shouldIncludeInvestigations`
* feat(investigations): add issue link
* Base logic to show saved query buttons in annotations, v1 dashboards only
* Add support for v2
* remove unnecessary function
* add TODO for checking logic later and clean up code
* Fix issue on cross-datasource replacement
* remove unnecesary async
* refactor code, call the prepareAnnotation in savedQueryUtils instead of relying on verifyDatasource
* Add unit tests
* Refactor code, add comments for context
* Add missing unit tests
* Fix issue of skipping prepareAnnotation always, added skipping only for replace saved queries scenarios, added unit
tests
* implement datasource-agnostic query normalization
* Dashboard Scenes: Fix missing Ctrl+O keyboard shortcut for crosshair toggle
- Add missing mod+o keybind to dashboard scenes keyboard shortcuts
- Implement crosshair state cycling (Default -> Crosshair -> Tooltip -> Default)
- Add comprehensive unit tests for keyboard shortcuts functionality
- Add e2e test to verify shortcut works and prevents browser file dialog
- Fix ensures parity between legacy and scenes dashboard implementations
Fixes issue where Ctrl+O/Cmd+O was opening browser file dialog instead of
toggling shared crosshair modes in scenes-based dashboards.
* Remove waitForTimeout from e2e test
- Replace arbitrary timeouts with proper element waiting
- Use waitFor with visible state instead of setTimeout
- Improve test reliability and follow Playwright best practices
* Optimize e2e test for crosshair keyboard shortcut
- Remove unnecessary console logging and timeout settings
- Simplify assertions to only check the currently selected radio button
- Improve test performance by reducing DOM queries
- Focus on essential functionality verification
* Fix linting
* create new interaction profiler behaviour and also use it to measure scopes fetching times
* PR mods
* refactor
* add canary scenes
* refactor
* refactor
* canary version
* add config flag for scope measurements
* refactor
* fix
* chore: initial tweaks
* chore: remove shadow
* chore: add reduced motion support, clean up
* chore: clean
* chore: active states tweaks
* Buttons: Add active state / style
* Update ToolbarButton and IconButton
* Update
* Update
* Get rid of important on disabled styles
* Only color for active
* Remove transform bits
---------
Co-authored-by: Galen <galen.kistler@grafana.com>
* Add scopes search highlight with wildcard support
* Change so query is not being applied to parent
* Update e2e tests with more stable selectors
* Fix initial load query
* Use the Highlighter library instead
* Remove unused sanitization
* Remove undefined export
* make validateReceiver private
* make functions and type alias private
* move EncryptedReceivers and DecryptedReceivers to notifier package
to reduce exposure of definitions package via legacy_storage
* return receivers with Grafana origin after create\update
* add tests for ConfigRevision methods
* codegen fix
* Return user role from the legacy store
* Lint
* Add tests, gen openapi
* make generate
* revert go.mod, go.sum, go.work.sum changes
* Update go.mod and go.sum
* add isruleEditable check in per rule ui and details page
* add tests
* update translations
* revert logic for not editable rules => we will allow adding/deleting/updating enrichments per this rule
* update translations
* update test
* pr feedback
* lint
* initialize permissionstore if ignoring legacy storage
* pass through feature toggles
* extract repeated logic to method
* remove extra TODOs
* workspace
* fix path
* fetch depth
* fix missing env var
* limit fetch depth to just 100 commits
* specify version env var
* fix path
* set versions var
* update npm
* Initial npm-publish workflow
* Validate version type and version match, typecheck packages before building, set npm tag
* quote GITHUB_OUTPUT
* codeowners
* fix syntax in release-build
* only tag the latest version with latest
* don't require NPM_TOKEN env var to be set if using OIDC
* put comment back
* tighten script
* Codeowners
* Use workflow_call for canaries, Rename workflow to match release-build
* codeowners
* implement team creation for legacy store
* add generated code
* add basic integration test
* add new fields to get and list teams
* fix sql tests for teams
* register dual writer for team resource
* add generated code
* add more sql tests for team creation
* address feedback
* add integration tests
* Update query type
* Support metric tank queries
- Update tests
- Appropriately set URL parameter
* Support queries via the backend
- Add the filterQuery and applyTemplateVariables methods
- Separate the frontend query path into its own function
- Ensure format is always json
- Add method for building backend query objects (maintain the existing template replacement logic)
- Fix a bug in metric find queries
* Update tests
* Fix lint
* Update types
* add e2e test for custom grid repeats
* update codeowners file
* adjust embedded panel test to account for different base url
* replace waitFor
* run bookmark e2e consecutively
* add repeats e2e tests for auto grid
* clean up
* adjust e2e test
* add e2e test for custom grid repeats
* update codeowners file
* adjust embedded panel test to account for different base url
* replace waitFor
* run bookmark e2e consecutively
* Alerting: move AlertLabels to alerting package
* add story & test for AlertLabel
* export label component from alerting package
* rename Label to AlertLabel
* resolve PR comments
* update imports
* export types from internal
* run yarn i18n-extract
* align with WAI-ARIA standards
* export AlertLabels props
* update failing test
* move labels components to alerting unstable
* alertlabel updates
* update test props
* update types and props
* update test prop types
* update types and props
* add role list to AlertLabel parent
* update story
* ensure color contrast accessibility
* move findCommonLabels into AlertLabels component
* unset size as small for tag
* update logic to get readable colors
* make label and value fonts accessible
---------
Co-authored-by: Gilles De Mey <gilles.de.mey@gmail.com>
* New logs panel: add basic show unique labels support
* LogList: switch to useMeasure to detect overflow
* LogList: remove debounce from size calculations reset
* Update test
* LogLine: keep unique labels expanded state between re-renders
* Remove hardcoded true
* LogListModel: add new property
* LogLine: switch to custom resize observer
* Revert removed changes
* Imports order
* Add missing function call in effect
* LogList: use improved debouncing for overflow
* LogLine: refactor resize listeners
* LogLine: mix observer with animation frame
* Prettier
* LogLabels: make button smaller
* LogLine: fix unwrapped unique labels
* Prettier
* LogListContext: sync mode only if not empty
* Revert "LogListContext: sync mode only if not empty"
This reverts commit 2b78249b35.
* module: remove default value
* generate schema for mimir integrations from schema on front-end
* review and fix the settings
* Update GetAvailableNotifiersV2 to return mimir as v0
* add version argument to GetSecretKeysForContactPointType
* update TestGetSecretKeysForContactPointType to include v0
* add type alias field to contain alternate types that different from Grafana's
* add support for msteamsv2
* update ConfigForIntegrationType to look for alternate type
* update IntegrationConfigFromType to use new result of ConfigForIntegrationType
* add reference to parent plugin to NotifierPluginVersion to allow getting plugin type by it's alias
* add tests to ensure consistency
* make API response stable
* add tests against snapshot + omit optional fields
* alerting docs: update list view filtering description
update the description of the list view filter on the view alert rules page.
* img
* Update view-alert-rules.md
* Update view-alert-rules.md
* edit via lauren
* fix(Dropdown): update the boundary to the `.main-view`
* apply floating-ui changes everywhere
* remove some unused imports
* up timeout on this test cause it's unbelievably slow
* don't spread when not necessary
* fix case in panel edit on small screens
---------
Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
* migrate search queries to the backend
* set duration unit to ms
* remove error log for debugging
* support nested frames and improve url handling
* formatting in search.go
* space
* run make update-workspace
* remove un-necessary fmt.Sprintf
* add support for span table format
* update fn names and re-order
* support raw format
* revert go.mod and go.sum
* remove frontend logic
* remove any types from typescript
* fix golint
* add tests
* fix golangci-lint
* refactor and implement suggestions
* fix tests
* update data frame type
* remove console log
* fix
* use fallthough to traceql type
* use tempo backend for traceql queries
* update tests
* fix golangci-lint
* Correct types for Fields, allow nulls
* add feature toggle definition
* put backend logic behind feature toggle
* Change toggle default to false
* Remove console.log. Fix crash from missing table type
* fix tests
* fix backend tests
---------
Co-authored-by: Andre Pereira <adrapereira@gmail.com>
* add origin to receiver
* populate origin of the receiver
* set CanUse to false if origin is not Grafana
* set provenance if origin is imported
* set Grafana origin by default in conversion API
* set canUse annotation
* reject update\delete operations on resources with origin other than Grafana
* fail to create with wrong origin
* Table: Styling from field
* fix mistake with gdev
* e2e for kitchen sink
* add counter-example in e2e for completeness
* unit tests for utils
* update to store style field per-column, replace util
* optimize branches column-level variables
* Migrate LdapPage from connect() to React-Redux hooks
* Convert LDAP debug page into a drawer and hook it into settings
* prettier
* Use the Text component and make the input and button look like they do on the main settings page.
* Bring back isLoading and put in a LoadingPlaceholder
* i18n-extract
* rejigger
* linter fix
* feat: Add Long Animation Frame API support to dashboard performance monitoring
* Update dashboard profiler integration for long frame detection
- Remove LongFrameConfig parameter from SceneRenderProfiler constructor
- Update documentation to reflect LoAF-first detection strategy with 50ms threshold
- Remove references to configurable thresholds and script attribution
- Update console output examples to match new structured logging format
- Add related documentation reference to scenes PR #1235
* Update to scenes canary version with long frame detection
- Upgrade @grafana/scenes to 6.33.1--canary.1235.17401388269.0
- Upgrade @grafana/scenes-react to 6.33.1--canary.1235.17401388269.0
- Includes long frame detection implementation from PR #1235
- Update yarn.lock with new dependencies
* feat(performance): add PanelPerformanceData interface for panel-level metrics
- Create comprehensive panel performance data structure
- Include timing metrics, performance counters, and context data
- Add pluginLoadedFromCache flag to track cache usage
- Part of panel-level performance attribution implementation
* scenes bump
* Revert "feat(performance): add PanelPerformanceData interface for panel-level metrics"
This reverts commit 8547701672.
* fix lock
* Fix lock
* Chore: Update authlib
* exclude incompatible version of github.com/grafana/gomemcache
* Update go-jose to v4
* fix jose imports
* remove jose v3 from go.mod
* fix tests
* fix serialize
* fix failing live tests
* add v1 of ES256 testkeys. Port tests to use ES256 instead of HS256
* accept more signature algs for okta and azuread
* azure social graph token sig
* accept more signature algs for oauth refresh and jwt auth
* update workspace
* add a static signer for inproc
* rebase and fix ext_jwt
* fix jwt tests
* apply alex patch on gomemcache
* update linting
* fix ext_jwt panic
* update workspaces
---------
Co-authored-by: Jo Garnier <git@jguer.space>
This renames `data` to `expressions` for clarity in the rules apis.
Also makes certain fields that are redundant optional in the case of pure expressions, so that users don't have to specify them when they are not needed (e.g. not datasource queries).
* Adds pruner for eventstore - default 24 hours. Adds tests.
* update comment
* remove delay on startup. formatting
* updates log message type and removes useless comment
* caller handles goroutine for runCleanupOldEvents()
* simplify timestamp extraction
* adds config for event pruning interval
* uses start and end key to get all expired events
* remove sort when listing keys in event pruner - order doesnt matter
* use snowflake constants
* log when we delete 0 rows
* pass time.Time to cleanup old events func
* update bump-version
* Add id-token: write
* update generate-token step
* pull-requests -> pull_requests
* clone with token and set right name
* bump version 12.3.0-pre
---------
Co-authored-by: Kevin Minehart <5140827+kminehart@users.noreply.github.com>
Co-authored-by: grafana-delivery-bot[bot] <grafana-delivery-bot[bot]@users.noreply.github.com>
* support panel actions
* refactor
* add test; move action transformer to utils
* refactor so v2 headers and queryParams are just a simple record
* update open api
* update actions to be same shape accross all dashboard schemas and add validation on the backend
* cleanup
* update snapshot
* add tests to validation
* first go at update implementation
* template tests
* SQL tests
* more tests
* set namespace for read resource permissions
* fix a bug with perms being removed right after they're added
* remove unwanted changes
* fix tests and check error
* PR feedback
* Update pkg/registry/apis/iam/resourcepermission/sql.go
---------
Co-authored-by: Gabriel MABILLE <gamab@users.noreply.github.com>
* Add sort order to keys func in datastore. Add test to not prune deleted events.
* include sort field in the ListRequestKey instead of it being a separate param
* fix: prevent Intl.DateTimeFormat crash with invalid locales like 'c'
- Add locale validation utilities to prevent crashes when LANG=c is set
- Filter out invalid locales from navigator.languages before creating DateTimeFormat
- Add fallback handling to use browser defaults when all locales are invalid
- Fixes issue #110494 where Grafana crashes with 'RangeError: Incorrect locale information provided'
- Maintains backward compatibility for valid locales
Signed-off-by: Akhil Singh <singhakhil69@gmail.com>
* refactor: simplify locale fix to use direct try-catch approach
- Remove locale-utils.ts and locale-utils.test.ts files
- Use simple try-catch in dates.ts files: try locale, fallback to 'en-US'
- Use Laura's suggested approach in formats.ts with explicit variable declaration
- Remove unused utility exports from index.ts
- Maintains same functionality with cleaner, simpler code
- Avoids adding to public API while still preventing crashes with invalid locales like 'c'
Signed-off-by: Akhil Singh <singhakhil69@gmail.com>
* style: run prettier to fix linting issues
- Format code according to project prettier configuration
- Fixes failing Lint Frontend check
Signed-off-by: Akhil Singh <singhakhil69@gmail.com>
---------
Signed-off-by: Akhil Singh <singhakhil69@gmail.com>
What
This commit refactors the logic to restore a dashboard from a version.
The logic is moved from the API handler to the dashboard versions service,
which now supports restoring dashboards of different API versions.
Why
To make sure that dashboard version restoration works with v2 dashboards
API, as well as future API versions.
Signed-off-by: Igor Suleymanov <igor.suleymanov@grafana.com>
* AuthZ: Create without scope for resources outside of folders
* Make it explicit that create requires a scope check
* Update pkg/services/authz/rbac/service.go
* Use skipScope instead of ReqScope
Co-authored-by: Ieva <ieva.vasiljeva@grafana.com>
* Explain why there is no need to skip scope for roles
---------
Co-authored-by: Ieva <ieva.vasiljeva@grafana.com>
* Remove support for initMinSize.
Remove support for searchAfterWrite option, now it defaults to true.
* Remove reference to deprecated feature toggle.
* Remove feature toggle completely.
* Remove code related to indexing on watch events.
* Fix compilation error.
* Remove unused field.
* wip; public dashboards and snapshots work
* Chore: Fix example of major release (#110007)
baldm0mma/ fix example of major release
* CI: Push docker images to dockerhub on merges to main (#110056)
* support extracting queries in schema V2
* fix lint and test
* fix test
* clean up
* clean up
* apply feedback about early returns
* fix url issue when clicking open original dashboard in v1
* refactor to early returns
* fix api version comparison
---------
Co-authored-by: Jev Forsberg <46619047+baldm0mma@users.noreply.github.com>
Co-authored-by: Kevin Minehart <5140827+kminehart@users.noreply.github.com>
* added supported functions and alerting/recording rules
* added more to alerting and recording
* added LLM integration info, cleaned up some other language
* cleaned up some passive voice
* ran prettier
* added requested update to alert/recording rules
* added RefID definition
* Update docs/sources/panels-visualizations/query-transform-data/sql-expressions/index.md
Co-authored-by: Alex Spencer <52186778+alexjonspencer1@users.noreply.github.com>
* updates based on feedback
* updates based on feedback
* ran prettier
---------
Co-authored-by: Alex Spencer <52186778+alexjonspencer1@users.noreply.github.com>
* feat/add_observability_landing
* Add check for observability path
* Fix existing tests
* Test that we're rendering the component when in the correct path
* Reset all mocks after testing
* Check for extension only on observability route
* Undo changes to tests
* Extract strings to constants
* Remove unused validator
* Remove unnecesary ObservabilityLanding component
* Update subtitle for Observability section
* Use proper '
* Expose extension point, allow plugins to hook into it, and render received components
* Fix and test
* Remove no longer needed unit tests
* Readd validation checks, allow for regex like paths
* refactor(extensions): extract dynamic extension point ids to a separate enum
* Undo unwanted const to let change
* Update extension point id to better transmit intent and use
---------
Co-authored-by: Levente Balogh <balogh.levente.hu@gmail.com>
This lets the prometheus api respect NoGroup query logic and treat non-grouped rules consistently.
Co-authored-by: William Wernert <william.wernert@grafana.com>
Rules created in the new api makes the rule have no group in the database, but the rule is returned in the old group api with a sentinel group name formatted with the rule uid for compatiblity with the old api.
This makes the UI continue to work with the rules without a group, and the ruler will continue to work with the rules without a group.
Rules are not allowed to be created in the provisioning api with a NoGroup sentinel mask, but NoGroup rules can be manipulated through both the new and old apis.
Co-authored-by: William Wernert <william.wernert@grafana.com>
The first version of the app platform apis for alerting rules, including AlertRule and RecordingRule definitions.
Co-authored-by: William Wernert <william.wernert@grafana.com>
* Add feature toggle and extension point
* Update ff name for enrichment per rule
* update translations
* wip
* remove wrong duplication after merging from main
* manage enrichments per rule drawer: add ruleUid to extension component
* remove folder
* move drawer to the list page
* update translations
* remove unused import
* add client cfg for containers
* remove unused code
* add field for skip host env for proto client
* add docker to Swagger ignore
* add to enterprise swagger gen
* undo go.mod changes
* pass container image
* propagate container image field
* WIP: List
* make toV0ResourcePermissions work with an ordered list of assignments to ensure consistency in the results
* Test templates
* Split list query in two. I clearly need scopePatterns
* Add pagination with offsets
* Remove unecessary comment
* implement listiterator
* add listiterator tests
* return the correct resource version
* use SkipIntegrationTestInShortMode
* No need for the extra check on pagination being correctly set
Co-authored-by: Ieva <ieva.vasiljeva@grafana.com>
* Spec is out of date
* Remove wrong comment
* Add a test for the pagination token
---------
Co-authored-by: mohammad-hamid <mohammad.hamid@grafana.com>
Co-authored-by: Ieva <ieva.vasiljeva@grafana.com>
* TimeSeries: Use exported time comparison function
* Add alignTimeRangeCompareData to grafana/data
* Simplify tooltip time text formatting
* Bump scenes version
* Add tests for alignTimeRangeCompareData
* TimeSeries: Improve time compare default styling
* Update Time Comparison panel option menu
* Add backwards compatibility for older scenes
* Update shouldAlignTimeCompare for typical query
* Fix styling when multiple RefId matches
* Update default dash to be smaller
* Fix tooltip for older versions of scenes
* Configurable repository types in monolith and operator
* Default to Github in operators
* Regenerate wire
* Fix and implement unit tests
* Same types for enterprise tests
* Remove unnecessary conversion
* Remove the issue with import cycles
* Move tags and tag values request to datasource backend
* Remove outdated test
* Fix tests
* lint
* Refactor to use handlers for CallResource request
* lint
* Fix nit
* FS: Move multiTenantFrontend evaluation to OpenFeature
* comment
* actually, just remove the toggle
* fix k8s prefs test using toggle
* replace frontend flag usage
* codeowners
* move isFrontendService just into core
* put back comment
* Replace remaining calls to testing.Short where possible.
* Update style guide.
* Revert change in TestAlertmanager_ExtraDedupStage, as it doesn't work.
* Make TestAlertRulePostExport into integration test.
* Provisioning: add webhook support in API Server
* updating Extra interface
* adding extra with workers interface
* reverting extraWithWorkers in RegisterAPIService
* adding extra job worker provider
* adding new extra job provider
* Wire things differently
* Remove unused GetJobs
* Pass url variable as string
* Support webhooks in controller
* Fix condition
* Change the naming
---------
Co-authored-by: Roberto Jimenez Sanchez <roberto.jimenez@grafana.com>
* get trace-view-scrolling working in playwright
* almost fix frontend-sandbox-datasource test
* properly fix frontend-sandbox-datasource tests
* convert migrate-to-cloud to playwright
* prometheus-variable-editor tests in playwright
* enable prometheus-config tests in playwright
* run on frontend changes
* skip test
* remove various-suite
* PostgreSQL: FIx multiple results handling
- Added tests for handling multiple result sets, including compatible and incompatible structures, ensuring no panics occur.
- Improved `convertResultsToFrame` function to validate column compatibility and handle null values correctly.
- Introduced a new helper function `convertPostgresValue` for converting raw PostgreSQL values to appropriate Go types.
- Added comprehensive unit tests for `convertResultsToFrame` covering various scenarios including row limits and mixed result types.
* Add more test case
* Plugin Extensions: consolidate logic
* chore: add specific error to tests
* chore: refactors out common parts to getExtensionValidationResults
* chore: updates after PR feedback
* chore: update after PR feedback
* TimeSeries: Use exported time comparison function
* Add alignTimeRangeCompareData to grafana/data
* Simplify tooltip time text formatting
* Bump scenes version
* Add tests for alignTimeRangeCompareData
* Add backwards compatibility for older scenes
* Update shouldAlignTimeCompare for typical query
* Fix tooltip for older versions of scenes
* support for multiple shifts
---------
Co-authored-by: Leon Sorokin <leeoniya@gmail.com>
tlsConfig -> tls_config
hmacConfig -> hmac_config
tls_config export still does not match TF provider, as the provider currently
treats tls_config as a schemaless map. Once this is improved, they will now
match.
* copying from secrets migration
* service runs and mig promds type
* creating data source check
* adding aws
* split into azure/aws service. feature flag. auto install
* add tests
* clean up
* lint
* add code owner
* imporvments from andres
* remove prom mig from http_server
* remove interface for testing
* add prom mig to provisining data sources so prov happens before mig
* fit into prov
* comment
* log debug instead of returning in update type
* Trigger Build
* feature flag being weird
* not public method
* copying from secrets migration
* service runs and mig promds type
* creating data source check
* adding aws
* add tests
* clean up
* imporvments from andres
* remove prom mig from http_server
* remove interface for testing
* add prom mig to provisining data sources so prov happens before mig
* fit into prov
* Trigger Build
* not public method
* remove logger import
* Table: Update UX for single-reducer use case in new footer
* all cases are working; unit tests pass
* style and code cleanup in SummaryCell
* remove e2e test for sum reducer label
* reorganize code, todo tests
* slight style cleanup
* one more little reorganization
* updates based on CI failures
* update tests and docs
* unused prop
* update table footer image
* alt text, lint issue
* update gdev to create footer dashboard and re-point e2es there, add a few new cases
* remove console.log
* WIP: Controller
* WIP: more changes
* Use patcher from new location
* Separate import
* Move operators to grafana/grafana
* Tidy go mod
* Remove duplicate TODO
* Wrapper for unified storage
* WIP: build unified storage client
* More attempts
* Revert update workspace
* Improve comment
* Fix linting
* Change signature of repository getter
* Add ticket numbers
* Remove question
* Read config from file for decrypt service
* Config struct for unified torage
* Add local config
* Fix compilation
* Try to configure it
* Fix linting
* Add FIXME comment
* Move reusable logic into controller config
* Remove unused
* More logic to be reused
* Extract workers into separate function
* Clean up unified storage client
* Revert a couple of files
* Remove secrets decrypter from this PR
* Revert enterprise imports
* Clean up unified storage setup logic
* Add TODO
* Revert some changes
* Remove file
* Use the expected clients
---------
Co-authored-by: Stephanie Hingtgen <stephanie.hingtgen@grafana.com>
* LogListControls: add dropdown menu for timestamps
* LogListControls: add dropdown menu for line wrapping
* Update styles
* Translations
* Update tests
* Update test
* LogListControls: all events
* make legacy store expose only model.Receiver
* use integration as provenance type provider
* use revision RenameReceiverInRoutes
* introduce function GetReceiversNames in config revision
---------
Co-authored-by: Matthew Jacobson <matthew.jacobson@grafana.com>
* Extract from #108753
Co-Authored-By: mohammad-hamid <mohammad.hamid@grafana.com>
* Tackle create
Co-Authored-By: mohammad-hamid <mohammad.hamid@grafana.com>
* WIP use identity store to resolve role names
* WIP
* create role
* Remove unecessary comments
* comments
* sql templates
* test role insert tplt
* Add tests 😅
* Test permission insert template
* Test permission delete template
* Test assignment_insert template
* Manually test insertion
* Remove delete permissions. This is a create case we don't have permissions for that resource
* generate name handled by the apiserver library
* Remove comment and conversion
* Small renaming nits
* changes from main
* Add storage backend tests
* Add test to sql
* Test role contains a unique permission
* linting
* Account for pr feedback
Co-authored-by: Ieva <ieva.vasiljeva@grafana.com>
* Reuse mappers
* Move function to models
* Add check between name and spec resource
* Check if the resource does not already exist
Co-authored-by: Ieva <ieva.vasiljeva@grafana.com>
* fix query
* Check basic roles
Co-authored-by: Ieva <ieva.vasiljeva@grafana.com>
* Account for error
* Make struct names consistent
* Nit. I prefer createAndAssignManagedRole
* Remove notifyign
* log errors instead of returning them
* Fix exist query join
* Test errors
* Remove dup
---------
Co-authored-by: mohammad-hamid <mohammad.hamid@grafana.com>
Co-authored-by: Ieva <ieva.vasiljeva@grafana.com>
• Add handling for type-only refs like {type: 'prometheus'} in getInstanceSettings()
• Ensure consistency with get() method behavior
• Add test case verifying both methods return same results for type-only refs
New Crowdin translations by GitHub Action
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
* resource permissions get
* address review feedback
* address comments
- read using rp name
- narrow by scope and actionsets
- update sql tests
* align with verb simplification
* keep original format to avoid conflicts
* add sqltests
* cleanup
* Remove unecessary errors
* Move query template to queries
* Use splitN to make sure we have three parts
* Revert user permission management for now. We don't need it
* Revert error change
* group permissions by resource
* extract parse scope
* Move sql_test
* Move & test parseScope
* Add tests to getResourcePermission
* Linting
* Use namespace
* Add test to the backend
* Ongoing tests
* Remove pagination, fix query boolean, insert basic role binding
* Linting
* Straightened the created and updated times
* error handling and uniformization with other backend
* Restore comments to avoid later conflicts
* Integration testing
* switch to function, no need to make it a method
* isServiceAccount should default to FALSE instead of TRUE :surprised:
* PR feedback
* Sort spec permissions
* Shouldn't happen but double proofing
---------
Co-authored-by: Gabriel Mabille <gabriel.mabille@grafana.com>
* register exemplary alert rule extention into IRM extension point
* register AlertRuleHistory into IRM's extension point
* support more default filters
* lazy load alert rule extension
* simplify
* rename extension point
* use exposed component, put props type in grafana-data
* rename PluginExtensionPointsInPlugins to PluginExtensionExposedComponents
* Update public/app/features/alerting/unified/components/rules/central-state-history/CentralAlertHistorySceneExposedComponent.tsx
Co-authored-by: Marcus Andersson <marcus.andersson@grafana.com>
* export new types from grafana/data and avoid relative import paths
* improve naming of exposed component
---------
Co-authored-by: Marcus Andersson <marcus.andersson@grafana.com>
* fix infinite scroll when using folder tree view in dashboard page inside folders with more than 50 items
* fix off-by-one error when fetching in list view
* Table: Footer support for multiple reducers
* fix migrator test output due to required default value
* fix go migration test
* more go test fixes
* fix go tests for footer
* Merge #110062
* update migration dashboard
* Small docs fixes
* Small docs fix
* remove migration method in Go, update js unit test
* add migration dashboard for footer and clean up some issues with countAll
* Footer should always use og rows for calcs
* update footer to be unaffected by filtering and sorting
* more e2es
* add more complex footer to kitchen sink, migrate panel all the way up
* update codeowners for e2e
* relocate footer migration panels and e2es to main 12.2 migration dashboard
* go further with the migration; kill unused fields, rename reducer to reducers
* get the go code up to date, move enablePagination to its own option as well
* add a unit to one of the numeric columns with a footer in kitchen sink
* fix reducers override in kitchen sink migration table
---------
Co-authored-by: Paul Marbach <paul.marbach@grafana.com>
Co-authored-by: Isabel Matwawana <isabel.matwawana@grafana.com>
Co-authored-by: Isabel Matwawana <76437239+imatwawana@users.noreply.github.com>
Co-authored-by: Leon Sorokin <leeoniya@gmail.com>
* Add logic for groupby count and add tests
* remove skip
* Use better and accurate test naming
* deconstruct options, add test for group by / count
* Have different values for test
* Remove only and change variables to allow optional chaining based on field
* add back destructuring
* fix: add back missing edit button for panels for viewers-can-edit
* lint fix
* updated meta cansave function with config option
* cleanup
* lint
---------
Co-authored-by: Haris Rozajac <haris.rozajac12@gmail.com>
* LogLineDetails: show border right when controls are disabled
* LogLineDetails: update styles
* Update types in test
* Update background, border, and shadow
* Close details: fix tooltip
* Update the Storybook docs for RadioButtonList where it was incorrectly referencing RadioButtonGroup in code examples
* Update the Storybook docs for RadioButtonList and RadioButtonGroup with more useful guidance for usage
* Refine the Storybook docs for RadioButtonGroup
* Fix listing and getting dashboard versions across different API versions
What
This commit updates dashboard version service to use API version aware
API client. The service now also supports parsing different API version
representation of dashboards.
The API version aware client is also updated to support listing across
versions.
Why
Currently listing or getting specific versions is broken for all v2
versions of the dashboard API, especially if the dashboard being checked
is still saved using v1 APIs.
Signed-off-by: Igor Suleymanov <igor.suleymanov@grafana.com>
* Remove superfluous tracing spans
Signed-off-by: Igor Suleymanov <igor.suleymanov@grafana.com>
---------
Signed-off-by: Igor Suleymanov <igor.suleymanov@grafana.com>
* fixes the layout in a slightly naive way
does work in both chrome and firefox
* make panel and query sections individually have full viewport height
* allow wrapping in dashboard controls, and align time picker section correctly when wrapped
* use more fixed minimum widths and allow horizontal scroll for overflow
* remove collapsing when sizes are fixed, and fix inverted collapse state logic
* use new wrapper for reflow layout media query setup
replace the magic numbers with theme breakpoints
apply global styles conditionally and locally
fix left to right splitter collapse state so it's removed in small size
added betterer exception that will be removed in the next commit
* moved component definition outside of non-react class so react hook lint rule recognizes it's not a class component (betterer fixes)
* remove unused import
* nit fix
* move disabling useSnapperSplitter logic into the hook
simplify reflow hook to only use height, and use a fixed height unrelated to shared width breakpoints
* remove global style overrides
* prevent scrolling in editor
---------
Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
* fix(frontend-service): mount public/img dir, copy Canvas subdirs over
* fix(canvas): update icon selector to use enum type not magic string
* fix(canvas): update folder selector to use grafana path from window
* chore(todo): code comment on when/where to remove Dockerfile COPYing
* feat(resource-dimension): public asset URL should include build/ for CDN
* chore(todo): note where to remove -- Grafana -- ds dependency from later
* fix(canvas): update folder selector to use build/ in path to hit CDN
* test(resource-dimension): expect relative URLs to include build/ for CDN
* fix(geomap): load icons for legend from CDN friendly path as well
* chore(resource-dimensions): delete dead code
* Provisioning: Use merge patch instead of json path to release orphan resources
* rolling back to json Patch
* adding TODO for testing
* adding integration test
* using struct
* addressing comments on tests
Fixup on a misleading error being returned due to a missing return statement in the code. Was returning the error "conversion succeeded but no frames" even though there was an error.
* Alerting: Fix insights panel for Grafana missed iterations
Existing panel was copied from Mimir version, so it was using the
wrong metric as well as incorrect assumptions on the series labels
grafanacloud_instance_rule_group_iterations_missed_total ->
grafanacloud_grafana_instance_alerting_schedule_rule_evaluations_missed_total
parsing `rule_group` (ex. `/rules/12345/synthetic_monitoring;default`) ->
using `rule_title` directly
* Linting
* make cgo optional for sqlite
* update go.mod; check error code differently
* reduce api surface even more
* move test errors into sqlite package
* CGO_ENABLED=0 in unit tests
* disable for enterprise, too
* add driver name constant
* remove unused constants
* make test an integration one
* try integration tests without cgo
* implement error codes for modernc sqlite driver
* typo fix
* missing return
* use error pointer as an interface
* alias the driver
* update workspace, check for test errors too
* check error properly
* add missing driver after rebase
* fix missing import after rebase
* debugging, lets try again
* properly parse options, revert many previous changes
* remove another log
* better url parsing
* revert test rename, leave it for later
* revert reusedSession in unistore
* revert more code
* remove driver name
* revert formatting
* add integration test without cgo for sqlite
* remove tracing and logging
* bring driver alias back
* fix type
* wrong package
* LogLineDetailsLinks: create component
* Label: add space
* Comment
* LogLineDetailsLinks: show value in a toggletip
* LogLineDetailsLinks: add label
* Update tests
* update options type to promise, fetch only when dropdown is open
* add GMA/DMA section WIP
* remove rule manager radio
* use default no options found in dropdowns
* fix failing test
* resolve PR comments
* replace fetchPromNamespaces with fetchGrafanaGroups
* Url sync for tabs rehink
* Update
* Thinks are working pretty well
* wip: solve tab not found
* fix lint and tests
* adjust wait for repeats in getCurrentTab
* set currentTabSlug in useEffect
* set currentTabSlug on tab title change
---------
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
* Move repository package to apps
* Move operators to grafana/grafana
* Go mod tidy
* Own package by git sync team for now
* Merged
* Do not use settings in local extra
* Remove dependency on webhook extra
* Hack to work around issue with secure contracts
* Sync Go modules
* Revert "Move operators to grafana/grafana"
This reverts commit 9f19b30a2e.
* Unistore: Only Shadow Search Traffic when running on modes > 0
Signed-off-by: Maicon Costa <maiconscosta@gmail.com>
---------
Signed-off-by: Maicon Costa <maiconscosta@gmail.com>
* Add basic arrow key navigation support
* Add shortcut for applying scopes
* Support expanding nodes with arrow keys
* Make useEffect non-conditional
* Add a11y and error boundary
* Fix preventDefault
* Add test for keyboardinteractions
* Add tests and expanded status to treeitem
* Reset highlight when disabled and change styles
* Fix tests
* Update i18n
* Remove unused var
* Reset enterprise imports from main
* Move failing test to correct quite
* Remove test outside fo context
* Remove unused import
* Use highlitghted ID instead of index
* Extract all highlighing functionality into its own hook
* Remove unused imports
* Broken dash repro
* Fix V16 migration to preserve panels when rows array is empty
- Fixed bug where panels were deleted when migrating dashboards with empty rows array
- Updated v16.go to match frontend implementation behavior
- Added test case for empty rows scenario in v16_test.go
- Renamed test files to v16.empty-rows-and-panels-array.json for clarity
- All migration tests passing (419 test cases)
* ExtensionSidebar: Remove feature flag and enable by default
* ExtensionSidebar: Remove `isEnabled`
* ExtensionSidebar: Lint
* ExtensionSidebar: Lint
* ExtensionSidebar: Remove more FF
* i dont know why, but okay
* feat(plugins): add a way to expose core apis only to certain plugins
* review: update naming
* review: update the owners of the feature toggle
* feat: share the restricted apis with extensions
* fix: linters
* feat: remove the `addPanel` api
* chore: fix linting and betterer issue
* tests: use `@ts-expect-error` for more clarity
* Don't use transaction in ListModifiedSince.
To guarantee that we don't include events with RV > LatestRV, we include the check in SQL query instead.
* Fix integration test by converting SQL comments into template comments.
* Add state history config to frontend config object
* Add alertingTriage feature toggle
* Add Triage menu entry
* Add old state history config props for backward compatibility
* Table: Max height for wrapped content
* Docs: tableNG max cell height (#110069)
Co-authored-by: Paul Marbach <paul.marbach@grafana.com>
* change to Max row height instead of Max cell height
* fix unit test
* table utils codeowners
* Update packages/grafana-ui/src/components/Table/TableNG/utils.ts
Co-authored-by: Leon Sorokin <leeoniya@gmail.com>
* update docs
* fix docs
* Revert "fix unit test"
This reverts commit c46b0f1bec.
* fix unit test
* trade one important for another
* Tweaked wording
* hover overflow for max row height
* get rid of commented out section
* and we did it without important
* centralize overflow for max height assessment
* some alignment stuff was busted
* didn't end up using the max heigh arg for shouldTextOverflow
* make i18n path more consistent
* put some tooltip things back since they ultimately didnt change
* we can simplify the :not selector
* delete comment
* don't bother with :not
---------
Co-authored-by: Isabel Matwawana <76437239+imatwawana@users.noreply.github.com>
Co-authored-by: Leon Sorokin <leeoniya@gmail.com>
* LogLine: implement custom highlight renderer
* Log line: fully replace highlighted body with highlight tokens
* processing: update test
* Add unit test
* Add deeply nested JSON test
* processing: update clone function
* Scroll to log line: find by uid
* LogLineDetailsLog: check if the log contains ansi
* Prettier
* attempting to "fix" geomap
* copy gazetteer/maps folders into dockerfile for frontend service
* add TODO comments
* remove unused import
* conditionally use public cdn path
* fix unit tests
* try refactor e2e test for better stability
* Revert "try refactor e2e test for better stability"
This reverts commit d966d68e15.
* safer
* use grafana_public_path
* Skip query when ListModifiedSince cannot return anything.
* Only save listRV if it's different than sinceRV. This saves a disk access if not needed.
* Add test for ListModifiedSince with same RV.
* pyroscope: process sampling annotations
* Enable annotations in classic explore
* Run prettier
* Revert unneeded change to plugin.json
* Tweak wording in sampling annotation
* Fix test
* Disable annotations by default
* Explore: Remove Drilldowns banner
Removing banner added in https://github.com/grafana/grafana/pull/100409. It's been 6 months since it was added and we can remove it now.
* Update translations file
* remove build size from ci scripts, test adding a github action step
* generate pa11y results file
* setup node
* don't need grabpl
* get key from vault
* doublequote env var
* write node script for publishing
* update CODEOWNERS
* add some logging
* yarn install...
* tidy up
* only on main branch
* add VersionedNotifierPlugin and method that converts NotifierPlugin to it
* return new schema if query parameter version=2
* add version to k8s model of integration
* fix open api snapshot
* add version to IntegrationConfig
* use current version on conversion
* create versioned integrations for test
Recording rule fields were not being copied correctly when duplicating an alert rule. This manifests as missing `TargetDataSourceUID` fields from the `Record` part of the rule when rules in a group are re-ordered.
Added some additional tests to ensure we cover the generation of recording rules in tests and fixed the copying logic to ensure all fields are copied correctly.
Creates comprehensive guide for configuring recording rules with TraceQL metrics queries,
including Tempo-specific considerations for time ranges, evaluation delays, and examples.
Signed-off-by: Alex Bikfalvi <alex.bikfalvi@grafana.com>
Co-authored-by: Kim Nylander <kim.nylander@grafana.com>
Co-authored-by: Jack Baldry <jack.baldry@grafana.com>
* docs(openapi): Cleanup tag usage and minor fixes
* Add missing change
* More fixes
* make swagger-gen
* Remove unused documentation
* Update pkg/services/publicdashboards/api/query.go
Co-authored-by: Artur Wierzbicki <artur@arturwierzbicki.com>
* Run make swagger-gen
* Run make openapi3-gen
---------
Co-authored-by: Artur Wierzbicki <artur@arturwierzbicki.com>
* Added wrap text to table options and removed from multiple cell options
* Removed wrap text from cell options shared file
* Edited
* Edited
* Table: Migrate to field-level wrapText toggle
* migrate hidden -> hideFrom.viz as well
* more cleanup from rebase
* restore options that got killed in the rebase
* when wrap text is enabled for the whole table, exclude columns that do not make sense
* fix TableNG unit tests
* fix i18n
* unit tests for the migrations
* sort out e2e issue
* fix migration unit test
* fix backend migration test as well
* add a dashboard for the v12.2 table migrations
* update dev-dashboards.lisonnet
* make gen-jsonnet
* one of the panel versions didnt get updated
---------
Co-authored-by: Isabel Matwawana <isabel.matwawana@grafana.com>
* LogListControls: add third state to line wrapping
* LogListContext: decouple wrapLogMessage and prettifyJSON from state object
* Processing: reformat JSON according to prettifyJSON
* LogListControls: update class names and colors
* onLogOptionsChangeType: update type signature
* Update type
* Update tests
* Dont translate the plus sign
* Comments
sql_expression_query_length_limit
Set the maximum length of a SQL query that can be used in a SQL expression. Default is 10000 characters. A setting of 0 means no limit.
* remove feature toggle prometheusCodeModeMetricNamesSearch
* remove code that relies on prometheusCodeModeMetricNamesSearch feature toggle
* remove code that related to prometheusCodeModeMetricNamesSearch feature toggle
* remove commented code lines
* remove commented code line
* Put codeModeMetricNamesSuggestionLimit selector back
* remove redundant unit test
* Extract from #108753
Co-Authored-By: mohammad-hamid <mohammad.hamid@grafana.com>
* Tackle create
Co-Authored-By: mohammad-hamid <mohammad.hamid@grafana.com>
* WIP use identity store to resolve role names
* Commit empty service for now
* Clean
* For now only show name and created at
---------
Co-authored-by: mohammad-hamid <mohammad.hamid@grafana.com>
* Revert "Revert: "Accessibility: Ensure dashboard edit panel inputs have accessible labels" (#109984)"
This reverts commit 7331a2e8c3.
* revert test change that accidentally catches the issue
* use useId in some places
* make ID required
* fix some ids
* fix a couple more
* add ids to variables
Co-authored-by: Ashley Harrison <ashharrison90@gmail.com>
* add ids to get viz options
* add ids in getPanelFrameOptions
* add getFieldOverrideElements
* change name
* Replace other uuids with hard coded ids
* hoist useId out
* use some new selectors for table e2es
* commit betterer crimes
* use useId where we can
* Revert "use useId where we can"
This reverts commit 34090ac75d.
* fix some dashboard layouts tests
* rm AutoCellOptionsEditor
* idk try and fix tests
* restore fixed its for url state
---------
Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
Co-authored-by: Ashley Harrison <ashharrison90@gmail.com>
Co-authored-by: Paul Marbach <paul.marbach@grafana.com>
* Table: Enable tableNextGen by default
* kill off tableNextGen feature flag
* i18n
* i18n
* i18n
* remove state beta from table panel
* fix migration for 0 decimals migration
* add explicit auto option bacjk
* match impl from previous migrations code
* try changing some selectors
* remove timezone test from Cypress
* fix PlaylistForm unit test
* fix some selectors
* clean up i18n, are these gridcells somehow?
* return a couple of selectors caught in the dragnet to being cell instead of gridcell
* fix i18n for en-US
* clean up gdevs now that wrapHeaderText has no default
* update role in e2e for when it is re-enabled
* Add better type handling when correlation is created from provisioning and fix documentation
* add external example
* change error when deprecated key is used
* Alerting: Add Extended List Query for Alert Rules w/pagination
This adds an extended query which allows filtering by the kind of rule (Recording or Alerting) and supports pagination.
Pagination tokens will allow us to list all rules paginated, regardless of the rule group.
---------
Co-authored-by: William Wernert <william.wernert@grafana.com>
* Table: Color text, color background, and apply to row can co-mingle
* fix test
* lean on existing memoization and utils more
* just make that method a prop of TableCellRenderer
* add prop to tooltip stuff as well
* fix another test
* update TableNG with apply to row mixed color cell table
* simplify color overrides table
* special case: apply to row transparent bg
* add unit test
* delete erroneous import
* update for readability
* add new dataquery field for identifying which histogram type
* run make gen-cue to update tempo dataquery
* add native histogram check function & look for dataquery flag
* remove console log
* check for native histograms in queryfield
* only run query when histograms have not been migrated yet
* use less resource intensive query, just check if series are there
* fix type issue
* use series as better for detecting existence of a metric, fix betterer things
* fix type
* fix import
* remove metric name from func
* use datasrource func and don't make a new one
* remove string for boolean check in service graph functions
* fix bug for switching tempo data sources
* handle race condition for unmounting before async call is completed
* fix imports
* add todo to implement getNativeHistograms in Prometheus data source
* add todo to remove automatic check once tempo fully migrates to native histograms
* add todo to remove the native histogram config option
* Capture error_type label on metrics/traces
* Make error messages more helpful to user
* Use errutil, categorized errors, and tie them to error_type (category in code)
* Misc trace fixes
* Add metric to track SQL input conversion
* Add samlCatalog metric
* Add samlCatalog metric to stats
* Define hook for successful SamlCatalog metrics
* Register new hook
* Add tests
* Rework the collected stats and split it into versions
* LogLineDetails: get link details from href
* links: create module
* LogList: pass time zone and time range to Details
* LogLineDetailsTrace: create component
* InlineLogDetails: pass time range and time zone
* LogLineDetailsTrace: show loading and error messages
* Update tests
* LogLineDetailsTrace: update message styles
* Prettier
* Add test
* LogLineDetails: add embedded metric test
* Prettier
* LogLineDetailsTrace: use unique request id
* LogLineDetailsTrace: reset state when props change
* Chore: rename
* Chore: rename
* links: add integration test
* Prettier
* Separate interfaces for writing and reading in job history
* Register the 2 writers
* Commit unsaved file
* Do not validate or mutate history jobs
* Change the TODOs
* migrate to v19
* migrate to v18
* Migration to be verified: v17 Convert minSpan to maxPerRow in panels
* Migration to be verified: 16 Grid layout migration
* Refactor v17 and v19 migrations to use shared helper functions
* Migration to be verified: 15 No-op migration for schema consistency
* Migration to be verified: 14 Shared crosshair to graph tooltip migration
* cleanup
---------
Co-authored-by: Haris Rozajac <haris.rozajac12@gmail.com>
Co-authored-by: Haris Rozajac <58232930+harisrozajac@users.noreply.github.com>
* Table: Button up re-created functions and arrays
* use the single styles object
* restore automatically adjusted line
* restore automatically adjusted line
* update computeColWidths to create a string to help compare col widths
* use compareArrayVals for widths comparisons
* satisfy linter
* whoops, had this backwards
* clean up case with frozen columns
* remove dep
* avoid unnecessary change to computeColWidths
* LogLineDetails: add open and close events
* LogLineContext: add interval picker
* Log Context: allow to customize the time window around the log
* Loki: support custom time window
* LogLineContext: implement variable time window
* Remove console
* LogLineContext: store and format options
* LogLineContext: replace radio with combobox
* LogLineContext: run time window on the first request
* InfiniteScroll: use loading to prevent fake events
* Chore: update old comment
* Minor reorg
* Clean up unnecessary styles
* LogLineContext: fix overflow and scroll
* LogList: fix loading prop
* Update comment
* Translations
* Update public/app/features/logs/components/panel/LogLineContext.tsx
* LogLineContext: move default to constant
* LogLineContext: add test
* Prettier
* New Logs Context: Generic DS support for time window option (#109934)
* chore: add supportsAdjustableWindow to logs context interface
* Build
---------
Co-authored-by: Galen Kistler <109082771+gtk-grafana@users.noreply.github.com>
* rename query library user interface text with "saved queries"
* add missing replacement on "Query history"
* fix unit test
* Fix test and apply PR feedback
* try React.memo
* Table: Rework the renderers file and some types
* more test cleanups
* remove for gauge for now
* memoize all of the renderers
* also memoize the Tooltip component
* memoize the TableCellActions
* memo useStyles2
* update useStyles2 usage in TableNG
* remove console.log
* add a test for the AutoCell fallback rendering case for testField
* style nit - update variable name to be more idiomatic
---------
Co-authored-by: Paul Marbach <paul.marbach@grafana.com>
* Table: Refactor row height to work in pxs instead of lines
* non-string pill value handling, internal cleanup on buildCellHeightMeasurers
* no need to round up to max line
* remove drone & dead code in pkg/build; update go modules
* remove .drone.star
* Remove drone scripts and drone references in Makefile
* make update-workspace
* remove deadcode tool
* Remove daggerbuild/scripts: deadcode
* Remove drone files / folders in CODEOWNERS
* make update-workspace
* remove more dead code
* migrate to v19
* migrate to v18
* Migration to be verified: v17 Convert minSpan to maxPerRow in panels
* Migration to be verified: 16 Grid layout migration
* Refactor v17 and v19 migrations to use shared helper functions
* Migration to be verified: 15 No-op migration for schema consistency
* Update v27.go
* Update v16.go
* cleanup
---------
Co-authored-by: Haris Rozajac <haris.rozajac12@gmail.com>
Co-authored-by: Haris Rozajac <58232930+harisrozajac@users.noreply.github.com>
* WIP added ListSinceModified to StorageBackend interface
* fix compile time check
* Fix method name
* Fix naming
* fix the rest of the ListSinceModified names
* Uses resource key without name field
* get latest rv from resource_version. Update test.
* adds moar tests
* adds method stub for ListModifiedSince to other StorageBackend implementations
* adds dummy impl to noop storage backend for ListModifiedSince
* skip tests for badger kv backend for now
* fixes tests and adds badgerkv impl for ListModifiedSince
* add badger kv impl
* adds test for new query
* adds test data for new query
* adds ListModifiedSince stub to mockStorageBackend
* uncomment tests
* refactors ListModifiedSince to return an iter.seq2 and handles deduplication. Updates tests. Updates query result sorting.
* remove comments
* remove folder from query (dont need it, yet?)
* regen test queries
* updates test
* updates function comment
* use resourcepb.ResourceKey instead of ModifiedResourceKey
* wrap seq in single transaction. Rollback transaction after 30s if iterator never used. Only track last seen event. Formatting.
* skip TestListModifiedSince for kv backend
* use WatchEvent_Type for action type
* remove redundant fields from order by clause and regen test data for query
* remove redundant fields from order by clause and regen test data for query
* Migration to be verified: v17 Convert minSpan to maxPerRow in panels
* Address review comments: use Go idiom for variable naming and sort.Ints for sorting
* Migration to be verified: 16 Grid layout migration
* Refactor v17 and v19 migrations to use shared helper functions
* Address reviews comments
---------
Co-authored-by: Haris Rozajac <58232930+harisrozajac@users.noreply.github.com>
Co-authored-by: Haris Rozajac <haris.rozajac12@gmail.com>
* Fix partition by values missing refId
* have partitioned refID include original refID
---------
Co-authored-by: Kristina Durivage <kristina.durivage@grafana.com>
Bug fix where when saving changes to dashboard, DashboardPreviewBanner is rendering backward banner between loaded from new resource vs new resource created on remote.
* refresh parent folder when resource is created or deleted
* bulk delete and bulk move job: after job success, refetch folders
* refresh parent on both branch and default workflow
* move after success logic into getRepositoryJobsWithPath
* MoveProvisionedDashboard: root folder error fix
* Remove provisioned badge when whole instance is provisioned, root folder checkbox fix
* If root level only have one provisioned folder, allow select all on subitems
* remove button tooltip and remove comment
* regenerate API clients after schema updates
---------
Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
* add api client verification to lint step
* separate steps, clearer error messages
* make same change to non-enterprise version
* double-quote
* ignore conf
* update generated apis
* add names for steps
* fix comment
* Dashboards: New pathId concept to find panels not based on scene object key
* Minor fix
* fix test
* Fix test
* adding unit tests for pathId functions
* fix
* Fix link sharing to use new path
* fix
* Update
* No clone keys
* Remove all the clone keys complexity
* More changes
* update e2e test
* Progress
* fix auto grid item
* Finally working cannot move panel into clone row
* adjust how we find vizpanel for keyboard shortcuts
* Update
* Fix shortcuts
* Fix test
* fixing tests
* fix lint
* fix tests
* fix e2e
* adjust how outliine children are collected for auto and custom grids
* update
* Upgrade scenes
---------
Co-authored-by: oscarkilhed <oscar.kilhed@grafana.com>
Co-authored-by: Sergej-Vlasov <sergej.s.vlasov@gmail.com>
* Query Library: Connect QueryLibraryEditingHeader in QueryEditorRow
* Add unit test to queryn editor row
* Remove logic of "update query" save disk and add extra condition to prevent dragable action
* Add env support for different build environment targets
* Add NX target for dev builds
* Add option to build in dev mode
* skip immutable flag for dev builds
* GHA: Use equivalent self-hosted runners for BE unit tests Enterprise
* GHA: Use standard runners for BE unit tests OSS
* GHA: Use equivalent self-hosted runner for ephemeral env action
* GHA: Use self-hosted runners and adjust shards for BE integration tests
* GHA: Upgrade BE integration test Postgres from 12 to 17
* GHA: Upgrade BE integration test MySQL from 8.0.32 to 8.0.43
* fix: version history duplicating entries when navigation fails after restoring dashboard version
* fix navigation issue
---------
Co-authored-by: Haris Rozajac <haris.rozajac12@gmail.com>
* add github workflow scaffolding
* update comments
* Add image and resource commands
* Add secrets paths
* Block workflow run for forks
* ignore via package.json, update CODEOWNERS
* fix workflow path
* remove old azure monitor test
* pull docker image first
* add permissions for docker pull step
* checkout first
* keep creds file
* try all in one job
* with creds...
* add cloud: 'azure'
* pass CLOUD to docker
* add -playwright
* actually use the env vars
* don't need to pass CLOUD env var
* remove commented out code and tidy up
* kick CI
* Update container names and set PLAYWRIGHT_CI
* Update path
* fix zizmor violation
* use bigger runner, add double quoting
* add separate command and increase timeout
* remove timeout
* parameterise the e2e command in CI
* move cloud-plugins-e2e-tests into normal e2e test workflow
* fix detect changes
* pass creds into dagger
* try remove quotes
* add a debug log
* exec playwright command after mounting file
* reassign e2eContainer, add change to check the tests fail correctly
* fix test
---------
Co-authored-by: Andreas Christou <andreas.christou@grafana.com>
* Bare-bones mocked integration
* Create correct context based on the query
* Add data source name
* Do not bundle grafana/assistant with flame graph
* Rename component
* Add tests
* Mock grafana/assistant
* Update feature toggle and allow hiding the button
* Update deps
* Update types
* Update yarn.lock
* Fix typo in feature toggle description
* Enable grafanaAssistantInProfilesDrilldown by default
* Enable grafanaAssistantInProfilesDrilldown by default
* Show Analyze Flame Graph button only if there's context for the assistant
* Table: Get rid of ContextMenu on right click
* fix a scroll thing for expanded table, git rid of some conditional accessors
* remove context menu test
* remove context menu test
* i18n
* fix lint issue
* LogLine: don't run overflow check with unwrapped logs
* InfiniteScroll: don't listen to scroll events without scroll
* InfiniteScroll: minimize use of element.scrollHeight
* LogLineDetails: constrain to 95vw
* LogList: process logs while streaming
* Remove unused prop
* InfiniteScroll: update test
* Update test
* Inline Log Details: read max width from context
* Remove console
* Table: Tooltip by Field
* add colorization support
* more progress on customizing the tooltip based on cell customization
* configurable as an option
* tooltip triggered from a chip in the corner, pinning tooltip
* i18n
* use enum where appropriate
* correctly orient the tooltip to the cell - but at what cost
* clean up some console.logs
* e2e test for the tooltip
* fix global click stuff
* remove console.log
* refine the style of the caret
* caret placement on same-side as alignment to avoid collision with inspect hover
* some updates from self-review
* increase hit target of tooltip caret
* fix width and height auto-sizing especially for dynamic height
* reorganize to pre-calc the per-field stuff
* use linear gradient for triangle
* update e2e to reflect current behavior, that clicking caret multiple times doesn't toggle pinning
* clean up event handlers a bit
* restore test for toggle click
* alright, re-remove the toggle case
* cursor pointer
* remove optional root from Popover for now
* remove this ridiculous autogenerated file
* update some of the text
* kill the cellRefMatrix
* remove unused import
* extract a util for the predicateByName part
* skip the intermediary step for getCellColors
* Migration to be verified: v17 Convert minSpan to maxPerRow in panels
* Address review comments: use Go idiom for variable naming and sort.Ints for sorting
This reintroduces database pagination for the Prometheus API for rules.
Follow up for #109558 to use the new pagination format.
Note: This changes the sort-order to use `NamespaceUID` instead of the fully qualified Folder path. This also changes the cursor format to use the `NamespaceUID` instead of the Folder path and to be in a reverisble format.
* Table: Fix z-index conflict between DataLinksActionTooltip and ActionConfirmModal
* add an action to the kitchen sink Info column
* don't need the class for z-index
* fix this issue across a variety of viz types
* kill tooltip container in TableNG
---------
Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
* add tempo
* trying to debug trace propagation
* add extra header
* change header to inject
* very debug logging
* set GF_TRACING_OPENTELEMETRY_OTLP_PROPAGATION
* clean up config
* undo temp debug logging
* RepositoryResources: hide history button when repo type is pure git
* hide history button from file page
* hide history button from file page and file history detail page
Fix reusable workflow reference in release-comms
Use full repository path for create-security-branch workflow
to resolve linter errors about unable to find reusable workflow.
* update instantiations of OptionsPaneItemDescriptor to pass IDs - obvious changes
* update instantiations of OptionsPaneItemDescriptor to pass IDs - iffy changes
* update editors to pass ID through or note a missing label
* update playwright tests
* fix unit tests
* grafana ui components updated to pass ID through
* update components to pass ID through
* add missing input IDs
* better default ID handling
* remove TS note
* revert accidental non-html id change
* kick CI
* fix old-arch e2e tests
* change to plain useId calls
---------
Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
This reintroduces store level pagination, without using it in the prometheus API yet.
Related to #108633
Co-authored-by: William Wernert <william.wernert@grafana.com>
* big WIP
* more WIP
* leftover changes after merge
* bug fix: prevent modal close onclick inside modal
* add logic to filter by data sources
* use MultiComboBox component instead of MultipleDataSourcePicker
* add namespace and evaluation group filtering logic
* remove header section of PopupCard
* set max width on popup
* add contact point field
* add contact point logic and tooltip
* add tracking to filter- track open, apply, clear and values submitted
* add plugins show/hide field
* add plugins show/hide field
* add tests for new filter
* test tracking works as expected
* check v2 filter only shows if feature toggle is on
* tidying up
* fix lint errors
* fix close-on-type bug
* use ContactPointSelector component
* fix close-on-click-outside issue
* Add label dropdown logic
* Add query string to search field
* add test to check filtering by search field updates the filter popup values
* clear search input onClear of filters
* fix lint issues
* add tooltips to search input and datasource fields
* Sort typing in ContactPointSelector
* update translation file
* Add logic to group and list view buttons & refactoring
* update failing test
* update test mocks
* fix failing tests
* fix typecheck errors
* resolve PR comments part 1
* update label dropdown to include info text
* Translation extraction
* resolving PR comments
* move autocomplete logic to reusable hook
* resolve PR comments
* fix typecheck
---------
Co-authored-by: Gilles De Mey <gilles.de.mey@gmail.com>
Co-authored-by: Lauren Armstrong <laurenarmstrong@laurenskmacbook.home>
Co-authored-by: Lauren Armstrong <laurenarmstrong@mac.home>
Co-authored-by: Lauren Armstrong <laurenarmstrong@Laurens-Work-MacBook.local>
* set the boot data config correctly
* tighten up grafana/data types
* kick CI
* restore dashboard scopes props
* revert back to class
* add some comments
* kick CI
* add comment
* Update self instrumentation to use alloy and bump versions
* Update devenv/docker/blocks/self-instrumentation/config.alloy
Co-authored-by: Sam DeHaan <dehaansa@gmail.com>
* Add remote write receiver feature to Prometheus configuration in docker-compose.yaml
* Add example for plugin profiling to the doc
---------
Co-authored-by: Sam DeHaan <dehaansa@gmail.com>
* DashboardScenePageStateManager: Pass query params to loadDashboard when reloadDashboardsOnParamsChange enabled
- Extract query param processing into helper function
- Pass processed params to loadDashboard when toggle is on
- Add test coverage for query parameter handling
* review
* init: feature work
* chore: i18n
* feat: add run query + keyboard shortcuts
* chore: i18n
* chore: initial query formatted
* chore: resolve some issues
* chore: a bit of refactor to clean it up
---------
Co-authored-by: Kristina Durivage <kristina.durivage@grafana.com>
* Add log after jobs
* Use the same helper to create repository in export job
* Improve the logging
* Fix eventually conditions in helpers
* Fix export job tests
* Format code
* Fix linting
* Fix the format
* Fix linting issue
* Fix innefectual assignment
What is this feature?
This PR add the backend functionality to support viewing extra Alertmanager configurations (imported with the Prometheus conversion API) in the UI under the feature flag alertingImportAlertmanagerUI. The same flag will be used to enable this in the UI.
This is just the backend part, the full PoC PR is here: #109027
It uses a special datasource UID prefix __grafana-converted-extra-config-{identifier} to identify imported configurations. When the Alertmanager proxy handler detects this prefix:
GET requests are proxied to either the Grafana Alertmanager service (for alerts, silences, etc.) or the Prometheus conversion API to get the config
Write operations are not supported
* When creating a new continue token, it defaults to page 1. Also use constants for default limit and page number.
* Update tests for continue token.
* When listing legacy folders, the continue token will have all paging info in it. Simplifies paging logic and fixes bug when limit not specified.
* Adds regression test to ensure default page limit is enforced.
* remove test comment
New Crowdin translations by GitHub Action
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
* add suport for queryLibraryRef in explore
* add feature flag check on badge
* add test for migrator
* Add QueryEditor.test and useStateSync test
* implement onCancelEditingQuery library
* run i18n extract
* push mod changes
* Revert "push mod changes"
This reverts commit 29c410f126.
* remove queryRef from the URL
* remove queryRef from url in explore page, keep redux logic
* restore tests and remove old queryRef from URL behaviour
* clean up test
* remove unnecessary useCallback from onCancelQueryLibraryEdit
* apply PR suggestions about naming of functions
* rename queryRef to queryLibraryRef
* update missing files with the new queryLibraryRef
* fix i18n check
* Disabled add query buttons when queryLibraryRef is present
* Add unit test to components
* add missing queryLibraryRef after merge
* add placeholder for highlighted code
* clear up queryLibraryRef after sucess update
* add monitoring
* remove unnecessary change
* remove placeholder and integrate highlightQuery
* change "Editing From Query Library" to "Update query from library"
* update tootlip text
* fix interaction importing issue
* updating i18n for query library editing badge
* update copy on saving actions
* keep copy short
---------
Co-authored-by: Juan Cabanas <juan.cabanas@grafana.com>
* When repo is read only, disable action buttons and display badge
* browse dashboards page, disable checkbox if repo is read only
* clean up
* clean up
* i18n
* added read only status to repository page
* i18n
* fix
* readonly tooltip added local provisioning message
* i18n
* BrowseActions: when selecting item from a provisioned folder, disable all items from other provisioned folder. Display a tooltip when checkbox is disabled.
Replace github.actor with github.event.pull_request.user.login to prevent
actor context spoofing in pull requests from forks. This ensures only
genuine Dependabot PRs can trigger the workspace update workflow.
Fixes zizmor security finding with Medium confidence level.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-authored-by: Claude <noreply@anthropic.com>
* Add URLs to Job spec
* Rename them as RefURLs
* Implement RefURLs for Github
* Add Ref URLs to Jobs
* Worker Test
* Create the branch in the staged writer
* Regenerate Git mock
* Format code
* Consolidate ResourceURLs and RefURLs into one
* Fix broken tests
* Add config provider and integrate with wire setup
* Refactor quota service to use config provider for configuration management
* Enhance OSSConfigProvider to include logging and update ProvideService to return an error. Refactor server initialization to handle potential errors from config provider. Remove unnecessary wire binding for OSSConfigProvider.
* Update CODEOWNERS to include the configprovider package under the grafana-backend-services-squad.
* Refactor quota service initialization to include context in multiple service providers. Update tests and service implementations to ensure proper context handling during service creation.
* Fix Unable to use self-signed CA for verification when adding influxdb data source (#105585)
* Update pkg/tsdb/influxdb/fsql/fsql.go
---------
Co-authored-by: Andrew Hackmann <5140848+bossinc@users.noreply.github.com>
* Add HistoryJob back to Spec
* Generate client
* Put back History Jobs
* Add a controller to remove historic jobs after some minutes
* Start only if Loki is not used
* Format code
* Update OpenAPI spec
* Change log level
* Fix condition
* Fix staticcheck
* Use provisioning identity
* Fix registration APIs
* Fix readonly issue
* Update OpenAPI
* processing: display nanoseconds if present
* Nanoseconds: add control in log line menu
* virtualization: adapt to timestamp format
* Translations
* LogLine: update test
* virtualization: update test
* LogLineMenu: update test
* LogListControls: add third state for new logs panel timestamps
* Logs Panel: expose as a new panel option
* Translations
* Logs Panel: set timestamp resolution from panel config
* Module: add default value
* LogLine: update test
* Spelling
* chore: rename setter
* LogListControls: use custom button for resolution
* Translations
* Translations
* Prettier
* Logs Panel: conditionally show timestamp and details options
* Add integration test
* Table: Frozen columns
* i18n extract
* clamp the frozen columns by the total number of cols visible
* future-proof a bit: frozenColumns.left, add to kitchenSink
* Chore: Apply proper database settings to integration tests
* add logging
* join host and port in database config to override default ports
* apply test fixes from the original pr
* host might contain port already
* increase timeout
* increase timeout even more
* even larger timeouts
* Use eventually for stats
* Use eventually also for listing settings as index takes some time
---------
Co-authored-by: Roberto Jimenez Sanchez <roberto.jimenez@grafana.com>
* More clean up around waiting for jobs
* Add comment to trigger enterprise integration tests
* Trigger integration tests
* Collect error
* Move tests in wrong spot
* Clean up test
* Remove Eventually
* Remove duplicate not nil check
* Delete comment in infra tests
* Helper to create repository
* Use helper for move
* Dashboard Migrations: V31 LabelsToFields-Merge Migration
* Dashboard Migrations: V32 No-op migration
* simplify
* Refactor to reduce nesting
* Dashboard Migrations: V30 value mappings and tooltip options
* Do not automigrate since graph is migrated in v27
* Refactor to reduce nesting
* Add test case for invalid mapping
* migrate to v29
* wip
* Fix tests
* fix output
* wip
* fix min version issue
* fix wire
* ignore gauge logic as it never get's executed
* add panel migration to test
* improvements
* update
* cleanup
* address mappings inconsistencies
* cleanup
* fix lint issues
* add cfg when initializing
* v27 migration
* migrate to v26
* preallocate array
* remove logic for grafana-singlestat because it's shared with stat logic; improve error handling and testing
* fix go lint
* don't preallocate; cleanup comments
* cleanup
* wip
* run internal provider function when getting a single panel
* clean up; add tests
* add tests for panel plugin service
* remove obsolete mock for getting panel plugin
* add tests for the whole pipeline
* fix test and lint
* migrate to v23
* migrate to v22
* refactor
* fix test
---------
Co-authored-by: Ivan Ortega <ivanortegaalba@gmail.com>
* TableNG: Markdown cell, plus custom row height
* tab indentation in cue file
* fix i18n
* trying an auto height with the updated RDG
* get auto cellHeight working
* i18n updates
* hoor disable_sanitize_html flag in MarkdownCell
* update react-data-grid version to attempt to support page up and down
* removing custom height
* use the latest experimental RDG with paging up and down
* TableNG: Wrap text for DataLinks and Pills; groundwork for max wrap length
* disable editing max wrapped lines for now
* disable wrap text line limit e2e
* new i18n extract after commenting out input
* wip
* kill max wrapped lines for now
* more cleanup
* remove targeting classes added for max wrapped lines
* fix Pill test
* couple more style cleanups
* Table: Move cell-specific styles out to their own methods
* move styles into their own file
* combine renderer and style declarations to make auto cells work better, complete cleanup of internal cell elements
* fix e2es given these updates
* add a couple tests
* wip: tests
* add tests
* bump up capital letters in lorem ipsum
* fix copy-pasta mistake
* whoops, mis-merged the selector
* use a local count instead of getCellLinks
* use react-data-grid on react-18 branch
* fix linting on test
* gdev dashboard and smoketest for Markdown table
* remove cellHeightCustom
* restore bugfix from adversarial AI-generated JSON
* reorganize in light of recent and upcoming changes
* cleanup
* override the whitespace for markdown
* what are these auto imports about...
* fix cell height selector from merge
* also remove cellHeightCustom
* i18n
* avoid the important override in markdown cell styles
* revert some betterer config autoformatting
* slight code cleanup
* s/cat/grot, add color link panel to kitchen sink, fix color link/image link style issues
* update panelid for empty table panel test
* link styles outside of cell style setup
* flesh out kitchen sink examples, update ImageCell and applyToRow
* clean up some inconsistent states
* fix lint issue
* gdev update
* format JSON to satisfy linter
* shortening the text in the long text field
---------
Co-authored-by: Leon Sorokin <leeoniya@gmail.com>
* Unistore/dualwriter: delegate SetDefaultPermissions to Unified on Mode3
Signed-off-by: Maicon Costa <maiconscosta@gmail.com>
---------
Signed-off-by: Maicon Costa <maiconscosta@gmail.com>
* Dashboard Migrations: V31 LabelsToFields-Merge Migration
* Dashboard Migrations: V32 No-op migration
* simplify
* Refactor to reduce nesting
* Dashboard Migrations: V30 value mappings and tooltip options
* Do not automigrate since graph is migrated in v27
* Refactor to reduce nesting
* Add test case for invalid mapping
* migrate to v29
* wip
* Fix tests
* fix output
* wip
* fix min version issue
* fix wire
* ignore gauge logic as it never get's executed
* add panel migration to test
* improvements
* update
* cleanup
* address mappings inconsistencies
* cleanup
* fix lint issues
* add cfg when initializing
* v27 migration
* migrate to v26
* preallocate array
* remove logic for grafana-singlestat because it's shared with stat logic; improve error handling and testing
* fix go lint
* don't preallocate; cleanup comments
* cleanup
* wip
* run internal provider function when getting a single panel
* clean up; add tests
* add tests for panel plugin service
* remove obsolete mock for getting panel plugin
* add tests for the whole pipeline
* fix test and lint
* fix test
* Fix missing scenarios
---------
Co-authored-by: Ivan Ortega <ivanortegaalba@gmail.com>
* add the plan
* feat: Add plugin extension points for DataSource configuration components
- Add DataSourceConfigActions and DataSourceConfigStatus extension points
- Add PluginExtensionDataSourceConfigActionsContext and PluginExtensionDataSourceConfigStatusContext types
- Update EditDataSourceActions.tsx with plugin extension support and allowlist filtering
- Update DataSourceTestingStatus.tsx with dual extension point support (new + backward compatible)
- Create getDataSourceExtensionConfigs.tsx with example core extensions
- Update getCoreExtensionConfigurations.ts to include datasource extensions
- Implement grafana-owned plugin allowlist for security and quality control
- Support context-aware extensions based on datasource type and testing status
- Maintain backward compatibility with existing DataSourceConfigErrorStatus extension point
- Add proper TypeScript types and export them in index.ts
This enables grafana-owned plugins to provide contextual actions and status-specific integrations
within the datasource configuration workflow while maintaining security through plugin filtering.
* docs: Update specs.md with implementation status and lessons learned
- Add comprehensive implementation status section with completed features
- Document critical lessons learned during implementation:
* Translation limitations in extension configurations
* Plugin security through allowlist filtering
* Extension registration timing constraints
* TypeScript context type patterns
- Update implementation checklist with actual completion status
- Add detailed next steps and recommendations
- Include plugin development guidelines (do's and don'ts)
- Document architectural insights and patterns discovered
- Transform specs from theoretical design to practical implementation guide
This update serves as both historical record and developer guide for future
plugin extension work in Grafana.
* Add comprehensive tests for DataSource plugin extensions
- Add EditDataSourceActions.test.tsx with 12 tests covering:
* Core Grafana actions functionality and permissions
* Plugin extension rendering and interaction
* Plugin allowlist filtering and security
* Context passing and URL generation
- Add getDataSourceExtensionConfigs.test.tsx with 14 tests covering:
* Core extension configurations for both extension points
* Context filtering logic (datasource type, severity)
* Error handling and graceful failures
* Extension structure validation and type safety
Total: 26 tests passing, providing comprehensive coverage of the
DataSourceConfigActions and DataSourceConfigStatus extension points
implemented in previous commits.
* Update specs.md to reflect completed test implementation
- Mark unit testing phase as complete (26 tests added)
- Add comprehensive Test Implementation section documenting:
* Test file details and coverage areas
* Testing challenges and solutions discovered
* Performance metrics and execution strategy
* Command examples for running tests
- Update Success Metrics with concrete testing validation
- Update Next Steps to reflect testing completion
- Document new test files in Files Modified section
The plugin extensions implementation now has complete unit test
coverage for both DataSourceConfigActions and DataSourceConfigStatus
extension points with 26 passing tests.
* rm specs file
* lint
* refactor: replace 'any' types with proper TypeScript types in datasource extension tests
* tsc
* prettier: fix
* Fix datasource extension path format to resolve CI test failure
The troubleshooting link extension was using an invalid path format
'/docs/troubleshooting/datasources' which caused console.error during
test execution. Updated to proper Grafana core extension path format
'/a/grafana/docs/troubleshooting/datasources' to comply with plugin
extension validation rules.
* fix: DataSourceTestingStatus test failures
- Fix incorrect data-testid expectations to use proper e2e selectors
- Add contextSrv mock for hasAccessToExplore() dependency
- Create proper plugin links mock handling different extension points
- Update plugin link tests to use allowed plugin IDs
- Fix test logic to match actual component behavior for status/error links
- Add test coverage for non-allowed plugin filtering
All 10 tests now pass successfully.
* lint fix
* refactor: replace any types with proper TypeScript types in DataSourceTestingStatus test
- Replace any[] with PluginExtensionLink[] for statusLinks and errorLinks parameters
- Replace any with UsePluginLinksOptions for setPluginLinksHook callback parameter
- Add proper imports for PluginExtensionLink and UsePluginLinksOptions
- Improve type safety and IntelliSense support in tests
* rm brittle tests
* DataSource: Replace individual buttons with dropdown menu in EditDataSourceActions
- Convert LinkButton components to dropdown with Menu.Item components
- Add conditional rendering: show simple button when only one action, dropdown when multiple
- Use LinkButton for navigation and Button with dropdown icon for menu trigger
- Replace Trans components with t() function calls for Menu.Item labels
- Prevent PageHeader crowding when multiple plugin extensions are registered
- Maintain all existing functionality and tracking calls
* refactor: use configure() for dynamic datasource extension URLs
- Replace onClick handler with configure() function for dynamic path generation
- Use context to build monitoring tool URL with datasource UID
- Follows extension system design patterns for declarative configuration
- Removes manual window.open() in favor of automatic path handling
* refactor: use DataSourceConfigErrorStatus extension point for troubleshooting guide
Use the specific DataSourceConfigErrorStatus extension point instead of
DataSourceConfigStatus with conditional logic in configure function.
This simplifies the code by leveraging the right abstraction level.
* extract i18n
* lint:fix
* Revert "lint:fix"
This reverts commit 23cdb39672.
* lint:fix
* fix: mock plugin extensions registry in variables utils test
Fixes console.error calls during test execution caused by plugin extension
registration failures. The test was failing on CI because the extensions
registry was trying to register link extensions with invalid configurations
during module import.
Solution: Mock the entire plugin extensions registry setup to prevent
side effects from interfering with the test execution.
* fix: mock plugin extensions registry in explore query test
Fixes console.error calls during test execution caused by plugin extension
registration failures. The test was failing on CI because the extensions
registry was trying to register link extensions with invalid configurations
during module import.
This applies the same fix as the variables utils test - mocking the entire
plugin extensions registry setup to prevent side effects from interfering
with the test execution.
* better fix
* Fix EditDataSourceActions test by mocking utils and handling dropdown UI
- Add missing mock for constructDataSourceExploreUrl from ../utils
- Update tests to interact with dropdown menu structure instead of expecting direct text
- Fix test logic to match component behavior: Actions dropdown when user has explore rights
* lint:fix
* refactor: extract duplicated allowedPluginIds to single source of truth
- Add ALLOWED_DATASOURCE_EXTENSION_PLUGINS constant to constants.ts
- Remove duplicate allowedPluginIds arrays from DataSourceTestingStatus and EditDataSourceActions
- Update both components to import and use the shared constant
- Improves maintainability and ensures consistency across datasource config components
* refactor: update datasource extension link configurations
- Change title and description for the metrics drilldown link to improve clarity
- Update the path for the metrics drilldown link to reflect the new routing structure
- Remove the troubleshooting guide link configuration to streamline the extension options
* removing unused config
* better dropdown
* fix: update EditDataSourceActions tests to match component implementation
- Fixed tests to expect core actions as separate buttons instead of dropdown
- Updated plugin extension tests to use 'Extensions' dropdown instead of 'Actions'
- Added test for Extensions dropdown visibility logic
- All 12 tests now passing
* lint:fix
* remove extra check
* Update ALLOWED_DATASOURCE_EXTENSION_PLUGINS documentation to clarify plugin contributions to datasource configuration pages
* feat: Convert Explore data button to dropdown when extensions are available
- When hasActions is empty: shows normal Explore data and Build dashboard buttons
- When hasActions is not empty: converts Explore data to dropdown with angle-down icon
- First dropdown item: 'Open in Explore View'
- Following items: extension links
- Build dashboard button remains unchanged
- Maintains existing tracking functionality and internationalization
* test: Update EditDataSourceActions tests for new dropdown implementation
- Update tests to work with new Explore data dropdown that includes extensions
- Replace references to 'Extensions' button with 'Explore data' dropdown
- Add test for 'Open in Explore View' menu item in dropdown
- Verify correct behavior when extensions are present vs absent
- All 13 tests now passing
* test: Add comprehensive test coverage for dropdown explore functionality
- Add test to verify explore action href when extensions are present
- Ensure both dropdown and direct link behaviors are tested
- Complete test coverage for new dropdown implementation
* translation
* compass icon for the explore item
* feat: refactor AlertSuccessMessage to accept extension links as props
- Move extension links from inline definition to props for better reusability
- Add proper TypeScript support for PluginExtensionLink types
- Improve component architecture by separating concerns
- Add extensionLinks styling to getStyles function for consistency
- Support both real extension links and custom link rendering in success messages
This improves the component's flexibility while maintaining type safety.
* lint:fix
* remove invite user button from quick add menu as redundant with top nav invite user button
* clean up final invite user experiment
* remove invite user button from megamenu, clean up and consolidate usage of util functions across top nav and command palette
* add some basic tests to util functions
* fix tests / jest mock conflicts
* address PR feedback
* Update dependency eslint-webpack-plugin to v5
* set failOnError: false to match previous behaviour
---------
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
* Add setting to disable username based brute force login protection
* Use new DisableUsernameLoginProtection setting in tests where appropriate
* Update documentation for other brute force directives
* Avoid unecessary database calls
* Add test cases for username and IP protection settings
* Show refIds if nothing is recovered
* Add test
* Preserve function returning undefined if there are no recovered or selected refIDs
* cuter
* add context and remove testing by sibling
---------
Co-authored-by: Leon Sorokin <leeoniya@gmail.com>
* Add /children endpoint
* Update folder client
* Add comment
* Add feature toggle
* Add new version of useFoldersQuery
* Error handling
* Format
* Rename feature toggle
* Remove options and move root folder constant
* Fix feature toggle merge
* Add feature toggle again
* Rename useFoldersQuery files
* Update API spec
* Fix test
* Add test
* Migrate delete folder button
* useGetFolderQueryFacade
* Use getFolder facade hook
* Recreate legacy getFolder from the APIs
* Fix imports
* Add comment
* Rename function
* Simulate virtual folders in the API client
* Translations
* Update test
* Move the hook out of the index file
* Fix undefined in test
* Better status combining
* Use real access api for virtual folders
* Add basic test for the hook
* Remove commented import
* Remove the access control api and use legacy api for it
* Update tests
* Moved delete folder into facade hook
* Remove namespace attribute from virtual folders
* go lint
---------
Co-authored-by: Clarity-89 <homes89@ukr.net>
* Secrets: Update proto inline secure values to take variadic names on delete
* Secrets: Update inline delete when owned to take multiple names
* trigger CI
* TestUtils: Add helper to create certs
* InlineSecureValue: Move to its own package rather than service
* Settings: Rename decrypt server configs to grpc prefixed as it is more generic
* InlineSecureValue: Add gRPC client
* InlineSecureValue: Add service provider grpc/local depending on setting.Cfg
* Wire: Add ProvideInlineSecureValueService to basic wireset
* InlineSecureValue: Re-export in root secret pkg and generate mocks for interface
* Settings: Unify decrypt+inline setting into generic grpc client
* Read and write recent scopes
* Store entire ScopeNode, load from localSotrage
* Load nodes form localStorage on init
* Add runtime type validation
* Add tests
* Remove unused import
* Add parentNode name to selector integration test
* Deep clone
* Schema validation with zod
* Add comment
* Use zod for schema validation of scope object
* Update type validation of recent scope nodes
* Add comment
* Add expect ts error
* Fix nit
* ensure button must have tooltip/aria-label when no children
* fix violations
* restore some unnecessarily removed labels
* use types instead of interfaces as before
* further fixes
* fix unit test
* commit translations and fix unit test
* upgrade plugin-ui to 0.10.8
* set aria-label + unit tests
**What is this feature?**
Implement `getFiltersApplicability()` on the `--Dashboard--` data source
Also refactor some existing code to use this new approach to naming
This follows some previous work to implement AdHoc filtering on the `--Dashboard--` data source in PR #108011
**Why do we need this feature?**
See https://github.com/grafana/grafana/pull/107775 and https://github.com/grafana/grafana/pull/106756
> We want to see, when carrying filters from one dashboard to another, which of them are still applicable and which are not
Additionally I think @mdvictor is hoping to see more consistency in our approach across the codebase. But maybe he can confirm this.
**Who is this feature for?**
Everyone
* feat: compare legacy and unified search results via histogram
Signed-off-by: Bruno Abrantes <bruno@brunoabrantes.com>
* fix: handle cases where request type is not set
Signed-off-by: Bruno Abrantes <bruno@brunoabrantes.com>
* fix: use struct instead of bool because it's more memory efficient
Signed-off-by: Bruno Abrantes <bruno@brunoabrantes.com>
* fix: calculate recall percentage rather than union between legacy and unified
Signed-off-by: Bruno Abrantes <bruno@brunoabrantes.com>
---------
Signed-off-by: Bruno Abrantes <bruno@brunoabrantes.com>
* add equivalent dashboard-time-zone test
* remove cypress dashboards-suite
* modify tests to work with schema-v2 + update workflow to run playwright instead
* fix package.json
* update CODEOWNERS
* fix start-server to include ARCH
* remove frontend-platform as owners of public/app/core
* assign some things...
* more delegating
* assign more CODEOWNERS
* assign more CODEOWNERS
* assign more CODEOWNERS
* assign some more CODEOWNERS
* delete some unused files
* remove LocalStorageValueProvider and assign more CODEOWNERS
* remove WithFeatureToggle and assign more CODEOWNERS
* remove ticks as it's not used, assign more CODEOWNERS
* restore ticks, more CODEOWNERS
* finish assigning CODEOWNERS
* fix squad name
* fix: Avoid redundant formatting
Avoid formatting `secondaryUnitString` if it's not going to be used.
Signed-off-by: martincostello <martin@martincostello.com>
* fix: Fix date formatting when rounded
Fix issue where rounded secondary units would not be carried over to the primary unit when they are a whole multiple of that unit (e.g. `"4m 60s"` instead of `"5m"`).
Signed-off-by: martincostello <martin@martincostello.com>
---------
Signed-off-by: martincostello <martin@martincostello.com>
* Extract functions to util and utilize in both transforms
* Fix mistaken label and add better null logic to transpose
* Add a new row and add a blurb to docs about the new setting
* Update public/app/features/transformers/docs/content.ts
Co-authored-by: Isabel Matwawana <76437239+imatwawana@users.noreply.github.com>
* Update docs content, simplify null logic
* Add test, clarify empty logic
---------
Co-authored-by: Isabel Matwawana <76437239+imatwawana@users.noreply.github.com>
* Secrets: Add service name as explicit parameter for Decrypt
* Apply suggestions from code review
Co-authored-by: Stephanie Hingtgen <stephanie.hingtgen@grafana.com>
---------
Co-authored-by: Stephanie Hingtgen <stephanie.hingtgen@grafana.com>
* TableNG: Markdown cell, plus custom row height
* tab indentation in cue file
* fix i18n
* trying an auto height with the updated RDG
* get auto cellHeight working
* i18n updates
* hoor disable_sanitize_html flag in MarkdownCell
* update react-data-grid version to attempt to support page up and down
* removing custom height
* use the latest experimental RDG with paging up and down
* TableNG: Wrap text for DataLinks and Pills; groundwork for max wrap length
* disable editing max wrapped lines for now
* disable wrap text line limit e2e
* new i18n extract after commenting out input
* wip
* kill max wrapped lines for now
* more cleanup
* remove targeting classes added for max wrapped lines
* fix Pill test
* couple more style cleanups
* fix e2es given these updates
* add a couple tests
* wip: tests
* add tests
* bump up capital letters in lorem ipsum
* fix copy-pasta mistake
* whoops, mis-merged the selector
* use a local count instead of getCellLinks
* use react-data-grid on react-18 branch
* fix linting on test
* gdev dashboard and smoketest for Markdown table
* remove cellHeightCustom
* reorganize in light of recent and upcoming changes
* remove one more reference to cellHeightCustom
* put getDefaultRowHeight back into a util
* clean up test
* swap cell height back to a radio
* revert ImageCell change, we'll do it in the getStyles PR
* don't memo defaultRowHeight
* final couple of style cleanups
* different approach to managing the auto height part of this
* kill console.log
* update i18n
* reorganized once more
* i18n
* guard against rowHeight being auto for virtualization
* may as well memoize the defaultRowHeight
* get rid of the enableVirtualization initializer thing
* fixes from CI
* fix test
* fix test
* just omit third arg for that test
* remove nonsensical test case
* this file didn't get re-gen'd
* fixes from review
* row expander doesn't need height
* remove console.log
* fix e2e after we fixed pagination toggle bug
* TableNG: Wrap text for DataLinks and Pills; groundwork for max wrap length
* disable editing max wrapped lines for now
* disable wrap text line limit e2e
* new i18n extract after commenting out input
* wip
* kill max wrapped lines for now
* more cleanup
* remove targeting classes added for max wrapped lines
* fix Pill test
* couple more style cleanups
* fix e2es given these updates
* add a couple tests
* wip: tests
* add tests
* bump up capital letters in lorem ipsum
* fix copy-pasta mistake
* use a local count instead of getCellLinks
* fix linting on test
* Update test utils package with mock folder + search endpoints
* Add dashboards v0alpha1 api client
* Update hook to use app platform search API
* Update tests and fixtures
* LogLineContext: initial support
* LogLineContext: infinite scroll bottom
* LogLineContext: clean up styles and support both scrolls
* InfiniteScroll: support top scrolling
* LogLineContext: support center matched line
* LogLineContext: read options from storage
* LogLineContext: move padding container
* LogLineContext: reset on ui change
* LogLineContext: improve sort order and fix open in split
* LogLineContext: show log line
* Translations
* LogsPanel: integrate new context component
* LogLineContext: add unit test
* Prettier
* Remove unused import
* InfiniteScroll: add "scroll to load more" top
* LogLineContext: rename collapsible
* Update tests
* LogLineContext: refactor center button
* LogLineContext: handle overflow in small viewports
* LogLineContext: format referenced log line
* Memoize
* LogLineContext: make modal bigger
* LogList: improve a11y
* LogLineContext: flexbox magic
* LogLineContext: revert center button change
* LogsPanel: hide overflow
* LogLineContext: responsive min-height
* LogLineContext: fix wrap log message
* InfiniteScroll: improve direction handling
* Add feature flag
* Implement feature flag
* InfiniteScroll: report direction
* Skip export on already managed resources
* Add integration test
* Add integration test
* Handle nothing to commit error
* Fix leaky abstraction issue
* Handle the no commit error on commit and not on push
* Fix linting
* Some fixes for integration test
* Improve tree to work with a root
* Some fixes with hacks
* Add additional checks
* Fix comment
* Fix path problems in test
* Fix more stuff
* Revert to use empty tree
* Remove changes in tree
* Finally fix the tests work
* Remove stale comment
* Fix linting
* Revert changes in test
* Fix error message for folder not found in resource tree
Co-authored-by: roberto.jimenez <roberto.jimenez@grafana.com>
---------
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
We removed the "Filter for/out value" tooltips when we reimplemented the Table panel. We don't want to reimplement these, so we're improving the icons instead, to look more like "Filter" and less like "Zoom in/out"
* fix(canvas): style linter issue
* feat(canvas): update infinite viewer root element
* fix(canvas): resize element on moving
* fix(canvas): global element position
* fix(canvas): connection anchor position
* fix(canvas): connection position
* fix(canvas): connection coordinates calculation
* cleaning
* fix(canvas): calculation connection coordinates
* fix(canvas): initial connections svg position
* fix(canvas): align connection with new coordinates system
* fix(canvas): temporary element position fix
* comment
* Canvas: Fix canvas selecto (#104621)
* fix(canvas): get context back
* fix(canvas): selecto containers
* clean up
* Canvas: Fix jumpy elements behaviour on select and drag (#104641)
fix(canvas): jumpy elements behaviour on select and drag
* fix(canvas): connection regression (#104682)
* Canvas pan + zoom: Updated mouse interactions (#104648)
* feat: canvas panel pan + zoom key binds
* feat: panning when right click + ctrl
* chore: some cleanup
* chore: adjust mouse move delta by canvas scale
* Canvas: Zoom to content (#104950)
feat(canvas): zoom to content
* Canvas pan + zoom: Unique key for canvas panel elements (#104947)
fix: unique keys
* Canvas: Placement adjustment (#105117)
* feat(canvas): top/left placement migration
* feat(canvas): adjust constraint system for pan and zoom usage
* feat(canvas): support other constraints
* Canvas: Align connection anchors and element rotation (#106002)
* feat(canvas): align connection anchors and element rotation
* clean up
* clean-up math
* Canvas: Disable pan when pan+zoom toggle is false (#106224)
chore: no pan when pan+zoom toggle is disabled
* Canvas: Fix desync between scene and InfiniteViewer zoom/position on element addition (#106655)
feat(canvas): keep pan and zoom state to re-apply
* Canvas: Clicking on metricValue dropdown does not work; right-click triggers context menu instead (#106701)
fix(canvas): metricValue left click dropdown
* Canvas: Double-click on canvas should reset scale and position (#106709)
fix(canvas): dblclick to reset zoom
* Canvas: Put new canvas pan and zoom under feature toggle (#107001)
* feat(canvas): put pan and zoom under FF
* clean-up
* clean-up
* fix(canvas): clear selection on scene manipulation
* fix(canvas): any types
* Canvas: Fix canvas apply styles (#107404)
* fix(canvas): apply styles
* remove deps
* Canvas: E2E test coverage (#107474)
* betterer
* feat(canvas): sceneAbleManagement tests
* feat(canvas): playwright tests
* chore(canvas): add draft e2e tests
* chore(canvas): clean draft e2e tests
* chore(canvas): fix draft e2e tests
* chore(canvas): todo comments
* chore(canvas): update e2e tests
* chore(canvas): delete scene unit tests
* chore(canvas): delete sceneAbleManagement unit tests
* chore(canvas): delete sceneAbleManagement unit tests
* chore(canvas): linter
* chore(canvas): locales
* chore(canvas): remove flag checking
* Fix canvas connection point z-indexing bug (#107223)
fix(canvas): hoist connect points one level higher in DOM to fix z-index
* Revert "Fix canvas connection point z-indexing bug" (#108146)
Revert "Fix canvas connection point z-indexing bug (#107223)"
This reverts commit e419cb164a.
* Canvas: Set canvas zoom range (#108318)
* chore(canvas): set zoom range
* chore(canvas): naming
* Canvas: Fix infinite-viewer connections viewport values (#108315)
chore(canvas): infinite-viewer connections viewport values
* Canvas: Fix z-indices order and explicit pointer events (#108284)
* fix(canvas-connection-points): z-indices order, explicit pointer events
* chore(canvas): remove user select
* chore(canvas): naming
* chore(canvas): create ConnectionAnchor2 component
---------
Co-authored-by: Ihor Yeromin <yeryomin.igor@gmail.com>
* Canvas: Hide anchors on panel resize (#108588)
chore(canvas): hide anchors on panel resize
* Canvas: Center & scale select, resize, zoom bugs (#108749)
* Canvas: Fix center and scale constraint with zoom
* Remove unused resize flag
* Consolidate and clean up
* fix(canvas): re-size scale and center elements
---------
Co-authored-by: Ihor Yeromin <yeryomin.igor@gmail.com>
* Canvas: Fix on constraint change during zoom (#108947)
* Canvas: Ensure correct panel size during edit (#108953)
* chore(canvas): re-gen cue
---------
Co-authored-by: drew08t <drew08@gmail.com>
Co-authored-by: Sven Grossmann <svennergr@gmail.com>
Co-authored-by: Alex Spencer <52186778+alexjonspencer1@users.noreply.github.com>
Co-authored-by: Jesse David Peterson <jesdavpet@users.noreply.github.com>
Co-authored-by: Drew Slobodnjak <60050885+drew08t@users.noreply.github.com>
* wip so far. need to prove rebuilds work
* build common runner image
* glibc support
* ubuntu
* add conditional
* add support for cross-os builds
* format
* don't use zig by default on macos
* use postgres
* tidy up
* more tidy
* update readme
* remove errant changes
* ensure we build the grafana binary as part of the playwright server startup
* only build if binary isn't there
* add comments
* handle building the binary in the start-server script
* list all encrypted values and count
* separate interfaces
* add time filter to global queries
* initial secrets consolidation
* Revert defaults
* consolidate grpc proto
* More verbose description of the operation
* Add consolidation tests and tracing
* Fix lint
* Revert debug log
* Move buf to top level, regenerate
* Update Makefile buf generate
* Add fixtures and mock handlers for legacy teams API
* Fix teams betterer issues and error handling
* Refactor CreateTeams tests
* Update .betterer.results
* created config doc
* updated the config doc
* updates to the configure doc
* updates to configure doc
* updated the templates doc
* more query editor edits
* final edit on templates doc
* final query editor edits and new screenshots
* added tables to configure
* final edits
* final edits
* final edits
* added admonition and updates based on feedback
* ran prettier
* Display group and use + as separator
* Set/get parent node from URL
* Add hook useScopeNode
* Add loading state and Skeleton
* Add preload and actually commit hook
* Add preload
* Add feature flag
* Update test
* Fix test
* Fix tree test
* update CreateGrafanaAlertmanagerConfig to accept UserGrafanaConfig move construction logic to alertmanager
* consolidate building UserGrafanaConfig into buildConfig
* use config to determine whether it needs to be send calculate hash of the entire request struct rather than configuration
* list all encrypted values and count
* separate interfaces
* add time filter to global queries
* initial secrets consolidation
* Revert defaults
* More verbose description of the operation
* Add consolidation tests and tracing
* Fix lint
* Revert debug log
* make cgo optional for sqlite
* update go.mod; check error code differently
* reduce api surface even more
* move test errors into sqlite package
* add a comment
* chore: add documentation on unified search
Signed-off-by: Bruno Abrantes <bruno@brunoabrantes.com>
* fix: add additional needed feature flags for unified search
Signed-off-by: Bruno Abrantes <bruno@brunoabrantes.com>
* fix: add docs about index_min_count and index_max_count
Signed-off-by: Bruno Abrantes <bruno@brunoabrantes.com>
* fix: add documentation about sortable fields and the discrepancy with search/sortable
Signed-off-by: Bruno Abrantes <bruno@brunoabrantes.com>
* fix: kubernetesClientDashboardsFolders feature flag is no more, remove it from the docs
Signed-off-by: Bruno Abrantes <bruno@brunoabrantes.com>
* fix: simplify request flow diagrams
Signed-off-by: Bruno Abrantes <bruno@brunoabrantes.com>
---------
Signed-off-by: Bruno Abrantes <bruno@brunoabrantes.com>
* Fix scoped contact point permission check
* Use annotations permissions for k8s API and globals permissions for external AMs
* Fix scoped permission check for GrafanaReceiverForm
* Add details to tracing spans when creating index.
* Log reason for building index.
* Log reason for building index.
* Remove initialization of labels to avoid unnecessary metrics.
* Track succcessful, failed and skiped index builds. Track index build time for individual index, not all indexes.
* Revert removal of labels initialization.
* implement special dashboard fallback logic when dashboard data has invalid json behind feature flag
---------
Co-authored-by: Will Assis <william@williamassis.com>
* Revert "Revert: Future-proofing query and data source model in Dashboard Sche… (#107985)"
This reverts commit 13a89d4ae3.
* Revert "Revert "Schema V2: Simplify annotations v1<->v2 conversions" (#107984)"
This reverts commit 2b8c5bea1a.
* make gen apps
* e2e update
* Use v2alpha2 by default (#108177)
* Use v2alpha2 by default
* Apply only DS changes to alpha2
* Use v2alpha2 by default except to query
* Create a v2 index in @grafana/schema
* Update path and apply lint
* Update tests
* Update imports to v2 status
* Fix failing openapi test
* Schemav2 breaking changes: conversion implementation (#108224)
* provision v2alpha1 dashboard
* Run conversions for DS refactor
* Run snapshot testing on conversions
* Normalize output name
* Update snapshots to include all panel and variable cases
* fix lint
* fix lint
* fix test and go lint
* more go lint
---------
Co-authored-by: Ivan Ortega <ivanortegaalba@gmail.com>
Co-authored-by: Haris Rozajac <haris.rozajac12@gmail.com>
* Schema v2: Introduce group/datasource convention to GroupBy and AdHoc variable (#108237)
* Schema v2: Introduce group/datasource convention to GroupBy and AdHoc variables
* add conversion
* App Installer: Authorizer support (#108419)
* Chore: use `satisfies` and remove a load of `any`s (#108397)
use satisfies and remove a load of anys
* improve logging and fail unified-storage migration with more than 0 errors (#108471)
improve logging and fail unified-storage migration with more than 0 errors
* fix conversion test
* Secrets: Create more granular fixed roles for SecureValues (#108382)
* Provisioning: Fix bug in job progress recording (#108440)
Fix bug in job progress recording
* Provisioning: Fix ImportAllPanelsFromLocalRepository test (#108441)
* Provisioning: Skip flaky test
* Fix flaky provisioning test
* Fix lint
---------
Co-authored-by: Roberto Jimenez Sanchez <roberto.jimenez@grafana.com>
* BulkDeleteProvisionedResource: Move progress bar into a second step (#108417)
* Move progress bar into a second step
---------
Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
* [Dashboard Schema Codegen] Move dashboard CUE codegen block back up into kind body (#108476)
[Dashboard Schema Codegen] Move dashboard CUE codegen block back up into kind body to make sure new versions have the same settings.
---------
Co-authored-by: Haris Rozajac <haris.rozajac12@gmail.com>
Co-authored-by: Todd Treece <360020+toddtreece@users.noreply.github.com>
Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
Co-authored-by: Will Assis <35489495+gassiss@users.noreply.github.com>
Co-authored-by: Matheus Macabu <macabu@users.noreply.github.com>
Co-authored-by: Roberto Jiménez Sánchez <jszroberto@gmail.com>
Co-authored-by: Roberto Jimenez Sanchez <roberto.jimenez@grafana.com>
Co-authored-by: Yunwen Zheng <yunwen.zheng@grafana.com>
Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
Co-authored-by: Austin Pond <IfSentient@users.noreply.github.com>
Co-authored-by: Ivan Ortega <ivanortegaalba@gmail.com>
* Dashboard Schema V2: Refactor VizConfigKind to follow DataQueryKind convention (#108148)
* Dashboards API: Register v2alpha2 API
* Prepare conversion functions
* Fix test
* Refactor VizConfigKind to follow DataQueryKind convention
* fix tests
* use new dataquerykind convention alpha 2
* add conversion
* fix tests
* fix tests
* fix another test
* Fix merge
---------
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
* fix k8s codegen
* Update e2e-playwright/dashboards/TestV2Dashboard.json
* Update e2e/dashboards/TestV2Dashboard.json
* revert app generation for non-related apps
* try again
* another try
* also revert folder and secret app generation
* v2alpha1 provisioned dashboard
* Fix kind
* Fix conversion snapshots
* Update API discovery registry
* Rename to v2beta1
* Rename migrations
* Update apps/dashboard/pkg/apis/dashboard/v2beta1/doc.go
Co-authored-by: Stephanie Hingtgen <stephanie.hingtgen@grafana.com>
* Ensure conditional rendering and other non changed properties
---------
Co-authored-by: Ivan Ortega <ivanortegaalba@gmail.com>
Co-authored-by: Haris Rozajac <haris.rozajac12@gmail.com>
Co-authored-by: Todd Treece <360020+toddtreece@users.noreply.github.com>
Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
Co-authored-by: Will Assis <35489495+gassiss@users.noreply.github.com>
Co-authored-by: Matheus Macabu <macabu@users.noreply.github.com>
Co-authored-by: Roberto Jiménez Sánchez <jszroberto@gmail.com>
Co-authored-by: Roberto Jimenez Sanchez <roberto.jimenez@grafana.com>
Co-authored-by: Yunwen Zheng <yunwen.zheng@grafana.com>
Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
Co-authored-by: Austin Pond <IfSentient@users.noreply.github.com>
Co-authored-by: Haris Rozajac <58232930+harisrozajac@users.noreply.github.com>
Co-authored-by: Stephanie Hingtgen <stephanie.hingtgen@grafana.com>
* feat(test-utils): move the toEmitValue/s jest matchers to test-utils and add test script
* chore(jest): update configs to use matchers from test-utils package
* ci(frontend-tests): hook up packages tests
* fix(test-utils): re-export matchers from index.ts so packages that include setupTests don't error
* ci(pr-frontend-unit-tests): add frontend-packages-unit-tests to list of required unit tests
* Update packages/grafana-test-utils/README.md
Co-authored-by: Ivana Huckova <30407135+ivanahuckova@users.noreply.github.com>
---------
Co-authored-by: Ivana Huckova <30407135+ivanahuckova@users.noreply.github.com>
* Update index.md
Adjusted codeblock formatting from yaml syntax rather than bash.
* Ran 'yarn prettier write' in index.md to ensure formatting was correct after completing prior changes.
* feat(explore): implement compact mode feature
This commit implements compact mode for Grafana Explore to address issue #102867.
Features implemented:
- URL parameter support: ?compact=true or ?compact=1 activates compact mode
- Query rows auto-collapse: Query editors start collapsed showing summary line
- Content outline auto-collapse: Sections start collapsed to save space
- Single DrilldownAlertBox: Shows single banner in split view (no duplicates)
Changes:
- Added compactMode to ExploreState interface and selectors
- Added URL parameter parsing in useStateSync hook
- Modified QueryRows and QueryEditorRow components to support compact mode
- Updated DrilldownAlertBox logic to prevent duplicates in split view
- Fixed test files to use proper mock state objects
Fixes#102867
* Move compact mode to pane state and sync with URL
* Clean up
* Show Drilldown alert box only when not splitted
* Rename and clean up
* Clean up
* Add missing props
* Add missing props
* Add missing translations
---------
Co-authored-by: Piotr Jamróz <pm.jamroz@gmail.com>
**What is this feature?**
Allow AdHoc filters to be set from Tooltips when clicking on bars in the BarChart panel.
**Why do we need this feature?**
We're trying to implement a "Panel to Panel" filtering behaviour, similar to what is possible in Tableau and Looker. We're using AdHoc filters, as these scale well across panels and across dimensions in the data.
We expect this PR will work well in tandem with #108011 to allow panel-to-panel filtering of data coming from BigQuery.
---------
Co-authored-by: Leon Sorokin <leeoniya@gmail.com>
* Extract fuzzySearch to separate files and add fuzzy search to the listV2 filter
* Use the new fuzzy helpers in the old list view
* Extract more code to common fuzzy functions
* Update tests
* Add comments explaining outOfOrder parameter, improve tests
* Migrate the alerting fuzzySearch to @grafana/data fuzzySearch
* Add resource reference to spec
* Add FindResourcePath
* Fix formatting
* Use ForKind client
* Add unit test for new method
* Format code
* Add integration tests
* Fix unit tests
* Fix formatting
* Find out preferred version based on group and kind
* Handle trailing slash for folders
* Format code
* Fix linting
* Add integration test for folder bulk deletion
* Format code
* Format discovery file
* Deduplicate paths for deletion
* Alerting: Move some tests to full integration tests
* add back two error handling tests
* imports
---------
Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
* Dashboards: Add undo/redo actions for several template variable options
Also refactors some existing undo/redo code
* Run `make i18n-extract`
* formatting
* fix some a11y issues with the stories
* fix lockfile
* fix tests
* put aria-label on <Icon>
* add aria-describedby
* undo changes to VizLegendTable
* use useID for image id
* TableNG: Simplify row height calculation and make more extensible
* add a cache for the results of rowHeight when it's a function
* JSDoc comment for util
* from the other branch, copy the related code and tests
* rework the line counters a bit, limit line counting to string fields
* add test for string case for buildRowLineCounters
* add the concept of estimates vs. counts
* add a comment
* ceil, not floor
* try to be as terse as possible
* test for estimates
* comment the type
* more comment in test
* swap
* fix#108804
* convert em letter spacing to px for avgCharWidth calculation
* tweak whee em-to-px math happens, and force count to occur on every row when wrap is on to avoid short row issues
* update test
* update to clamp single-line estimation using a hardcoded value (0.85)
* add assertion for not calling counter in that case
* uwrap 0.1.2
* fix betterer issues
* fix typography ctx extra import
---------
Co-authored-by: Leon Sorokin <leeoniya@gmail.com>
* create a set of acceptance tests to run with bench
* move tests back, fix login tests to work with supplied credentials:
* rename files again
* rename skip message
* Pyroscope: Remove LegacyForms from ConfigEditor
* Pyroscope: Align fields in form
* Pyroscope: Add id to input and label for a11y
* Update public/app/plugins/datasource/grafana-pyroscope-datasource/ConfigEditor.tsx
---------
Co-authored-by: Piotr Jamróz <pm.jamroz@gmail.com>
Co-authored-by: Joey <joey.tawadrous@grafana.com>
* chore: adds documentation around the dual writer
Signed-off-by: Bruno Abrantes <bruno@brunoabrantes.com>
* fix: innacuracies in error returned, disambiguate (validation) and move table upwards for more clarity
Signed-off-by: Bruno Abrantes <bruno@brunoabrantes.com>
---------
Signed-off-by: Bruno Abrantes <bruno@brunoabrantes.com>
* replace new mapper additional code with new rangeUtil.describeTimeRange
* add some function descriptions
* add regression tests for timezone-respecting range mapping
* remove unused import
* disable auto fetch
* add partially written metric name situation
* add new limit
* add new methods
* rename methods
* implement auto complete after typing at least three letters
* betterer
* cosmetic changes
* partial or full trigger
* cleaner approach
* lint
* fix
* review feedback
* add dev mechanism for making backend unavailable
* handle unavailable backend in html
* fix ordering of /-/ routes
* Add new loader to index.html
* tweak light colours
* fix readme
* add error handling and error state
* use setTimeout for the retry loop
* easier on the comments:
* Remote Alertmanager: Use the same struct for Grafana stat and Mimir full state
* Alertmanager: Add methods to merge nflog and silences
* update grafana/alerting version
* make update-workspace
* update mocks
* remove unnecesary methods from the remote Alertmanager implementation, create separate StateMerger interface
* (WIP) Remote Alertmanager: Optionally merge remote state before starting the internal Alertmanager
* cleanup ngalert.go
* restore defaults.ini
* move state parsing logic to 'remote' package, clean up ngalert.go
* remove GetBase, implement MegeNflog and MergeSilences
* delete fmt.Println
* FetchRemoteState -> GetRemoteState
* UserGrafanaState -> UserState
* remove duplicate clusterpb import
* reorder MimirClient interface
* use general getState() method for Grafana state and Mimir full state
* remove unnecessary state merging methods from the Alertmanager interface
* remove pullState field
* reduce diff
* add info log after merging
* merge silences and nflog entries in the same method
* merge the remote state in the forked AM
* reduce diff
* update remote AM mock
* tests
* make error more specific
* typo
* Cloud migrations: store snapshots in the database
* update github.com/grafana/grafana-cloud-migration-snapshot to v1.9.0
* make update-workspace
* use new field name in test
* return error after call to fmt.Errorf
* create methods for readability / fix session deletiong not deleting snapshots
* remove debugging changes
* update sample.ini
* update tests to include OrgID in ListSnapshotsQuery
* lint
* lint
* Update pkg/services/cloudmigration/cloudmigrationimpl/snapshot_mgmt.go
Co-authored-by: Matheus Macabu <macabu@users.noreply.github.com>
* remove TODO
* Update pkg/services/cloudmigration/cloudmigrationimpl/snapshot_mgmt.go
Co-authored-by: Matheus Macabu <macabu@users.noreply.github.com>
* remove one of the debug logs
---------
Co-authored-by: Matheus Macabu <macabu@users.noreply.github.com>
* add undo/redo for group and base actions
* add undo/redo for rules
* adjust circular dependency issue
* add itemType translations
* adjust how we get rendering group
* fix: separate dashboard api tests
* fix: typo
* refactor: revert file rename
* fix: compilable
* fix: trial
* fix: remove unused func
* Pass the right value for kubernetesDashboardsEnabled flag
Signed-off-by: Maicon Costa <maiconscosta@gmail.com>
* Enable mode 3 for remaining tests
Signed-off-by: Maicon Costa <maiconscosta@gmail.com>
* Disable integration tests for MySQL and Postgres
Signed-off-by: Maicon Costa <maiconscosta@gmail.com>
* Run go work use
Signed-off-by: Maicon Costa <maiconscosta@gmail.com>
* Update go.mod
Signed-off-by: Maicon Costa <maiconscosta@gmail.com>
* Remove TODO comment
Signed-off-by: Maicon Costa <maiconscosta@gmail.com>
* Revert to go 1.24.5
Signed-off-by: Maicon Costa <maiconscosta@gmail.com>
* go.mod
Signed-off-by: Maicon Costa <maiconscosta@gmail.com>
* Remove duplicated block
Signed-off-by: Maicon Costa <maiconscosta@gmail.com>
* Experiment without reusing client
Signed-off-by: Maicon Costa <maiconscosta@gmail.com>
* Reenable integration tests on Postgres and MySQL
Signed-off-by: Maicon Costa <maiconscosta@gmail.com>
* Revert "Experiment without reusing client"
This reverts commit 0126e321a0.
* Reapply "Experiment without reusing client"
This reverts commit 5368b4c531.
* Refactor how we get an adminClient
Signed-off-by: Maicon Costa <maiconscosta@gmail.com>
* Add TODO comments
Signed-off-by: Maicon Costa <maiconscosta@gmail.com>
---------
Signed-off-by: Maicon Costa <maiconscosta@gmail.com>
Co-authored-by: Maicon Costa <maiconscosta@gmail.com>
* TimeComparison: Add time comparison option
* Display control conditionally based on option
* Provide timeCompare option to panels that opt in
* Only render time compare if panel supports it
* Create a custom time range compare component
* Move custom component
* Remove button checked
* Move time compare options out of field config
* Fix types and remove from fieldConfigProperty enum
* Remove from field config registry
* Add headerActions to V2 schema
* Remove dependency on timeCompare support registry
* Add feature flag
* Subscribe to options change in wrapper
* Remove custom rendering to simplify wrapper
* Bump scenes version
* Hide checkbox
* Remove unneeded query refresh during disable
* Fix import order in timeseries module
* Add util tests
* Support time comparison toggle for new viz panels
* Revert grafana-app-sdk and manifest changes
* Revert yarn lock
* Add ref option to stage options
* Fix the issue with ref in export worker
* Add unit tests for export stage options
* Do not fail if ref is equal to the stage branch
* Format code again
* fix test
---------
Co-authored-by: Stephanie Hingtgen <stephanie.hingtgen@grafana.com>
* deduplicate config preparation logic squashes config preparation in 3 places into a single method buildConfiguration
* remove copying config from decrypt because we already use copy
* move logic from decryptConfiguration to buildConfiguration
* move logic from mergeExtraConfigs to buildConfiguration
* load default config with buildConfiguration method and skip if fails
---------
Co-authored-by: Santiago <santiagohernandez.1997@gmail.com>
* add test runner and start experimenting with storybook a11y tests
* skip currently failing a11y tests
* first attempt at github action
* fix CODEOWNERS, fix copy assets
* no caching?
* make wait-on better
* increase timeout and add verbose logging
* kick CI
* remove verbose logging, try different runner
* remove commented out code in copyAssets
* try maxWorkers 2
* turn on verbose logging, run as part of same step
* test storybook verify
* try setting LANG
* tidy up
* add betterer test
* fix action buttons flickering in the old list view
* prettier
* address review coments
* remove duplication
* add canCreateGrafanaRules check for ai button
* fix(plugins): match decoupled plugin path in fe plugin loader cache
* chore(devenv): update local_cdn to work with latest changes in core
* refactor(plugins): improve legibility by splitting regexs into two
* revert(devenv): revert -oss removal in local_cdn rewrite path
A breaking change was introduced by this grafana-app-sdk PR: https://github.com/grafana/grafana-app-sdk/pull/795
This PR refactors the definition of our CUE files (manifest and kinds) to match the new model in the latest version of grafana-app-sdk.
* Span Details: Redesign span details header
* Update translations
* Add max width to operation name
* Test update
We don't show the spanId anymore, just the "share" label for each trace
* TableNG: Footer should render summary value in first column if present
* fix issue where empty fields array meant no calcs were shown
* fix a bug related to hidden fields
* go away from fieldmatcher to use a simple inline solution
* First draft autocomplete
* Better naming
* Change suggestion to table/column population
* Remove all suggestions, just use table/column population but trigger on space
* Gate feature flag behind a feature flag
* Reorganize and add function list
* Add blurb about autocomplete to docs
* Update public/app/features/expressions/utils/metaSqlExpr.ts
Co-authored-by: Alex Spencer <52186778+alexjonspencer1@users.noreply.github.com>
* Add try catch, remove promise resolve
---------
Co-authored-by: Alex Spencer <52186778+alexjonspencer1@users.noreply.github.com>
* Table: Style cleanups (minus DataLinkCell word wrap)
* kill JSONCell in favor of a custom display method and style overrides at TableNG
* remove unused type for JSONCellProps
* add increased specificity to CSS selector
* remove inherit and rely on undefined
* fix tests
* shrink and optimize DataLinkCell
* maybe
* format files
* better
* classname
* add Pills and DataLink cells to kitchen sink
* add comment about align + justify, simplify datalinks targeting
* simplify?
* poke
* tweak
* revert
* fix one more z-index conflict
* clean up alignment tests
* a couple more tests
* make TableNG e2e tests more resilient to changes to the gdev dashboard
---------
Co-authored-by: Leon Sorokin <leeoniya@gmail.com>
What is this feature?
This PR further improves concurrent updates to the provenance table (a follow-up for #101688). The fix explicitly checks for a provenance record using SELECT ... FOR UPDATE for the databases that support it before performing either an update or upsert operation. This preemptive locking reduces the possibility of deadlocks in MySQL.
This works only with the alertingProvenanceLockWrites feature flag enabled.
Why do we need this feature?
The current implementation (directly performing upserts without prior locking) may still encounter deadlocks because of the gap and insert-intention locks in some configurations, for example, with repeatable-read transaction isolation level in MySQL+InnoDB.
---------
Co-authored-by: William Wernert <william.wernert@grafana.com>
* Add warning job status
* Different strictness for export than for pulling
* Fix some unit tests
* Fix unit tests
* Update frontend to display the warning status
* Fix status badge
* Add missing return statement
* Improve text in alert
* Add test
* BrowseDashboards: Separate folder and dashboard permission checks
* Extract type
* Check for edit permissions
* Prettier
* Refactor test
* Update canEditItemType
* Update render check
* Update the check
* FrontendService: Add tracing and logging middleware
* tests!
* middleware tests
* context middleware test
* revert http_server back to previous version
* fix lint
* fix test
* use http.NotFound instead of custom http handler
* use existing tracer for package
* use otel/trace.Tracer in request_tracing middleware
* tidy up tracing in contextMiddleware
* fix 404 test
* remove spans from contextMiddleware
* comment
* mark up units
* remaining category markup
* prometheus translations...
* load prom resources in core
* more prom markup
* don't load prometheus resources directly in core
* isolate @grafana/data import in jest-setup to prevent side effects in tests
* directly use tz
* Dashboards API: v2alpha2 missing pieces
* Fix issue with dashboard client scope for alpha versions
As we now have 2 different alpha versions for v2 we need to store the
clients separately.
* Improve debuggability of provisioning export test
- Add a helper function to print the tree structure.
- Be explicit about the expected file names expected in each case.
* Update pkg/registry/apis/dashboard/mutate.go
* Update pkg/services/authz/zanzana/server/server.go
Co-authored-by: Igor Suleymanov <radiohead@users.noreply.github.com>
* Review
* go lint
---------
Co-authored-by: Roberto Jimenez Sanchez <roberto.jimenez@grafana.com>
Co-authored-by: Stephanie Hingtgen <stephanie.hingtgen@grafana.com>
Co-authored-by: Igor Suleymanov <radiohead@users.noreply.github.com>
* Context: Clean up contexthandler.Middleware spans
* seperate the middleware span from the rest of the request
* shuffle
* put of back
* span name
* Update pkg/services/contexthandler/contexthandler.go
Co-authored-by: Dave Henderson <dave.henderson@grafana.com>
---------
Co-authored-by: Dave Henderson <dave.henderson@grafana.com>
* Alerting: Contact point export snapshot test
* Fix Jira.fields hcl export type to allow map[string]any
Since gohcl does not support this type, we marshal as a string instead
which will be handled in the TF provider.
* mapToJSONStringCodec encoder needed for
TestContactPointFromContactPointExports
* fix: handle dashboards without version entries in migration
Signed-off-by: Bruno Abrantes <bruno@brunoabrantes.com>
* fix: adds AllowFallback flag to enable COALESCE logic explicitly during migrations
Signed-off-by: Bruno Abrantes <bruno@brunoabrantes.com>
* fix: update dependencies
Signed-off-by: Bruno Abrantes <bruno@brunoabrantes.com>
* fix: maintain original behavior when not using AllowFallback option
Signed-off-by: Bruno Abrantes <bruno@brunoabrantes.com>
---------
Signed-off-by: Bruno Abrantes <bruno@brunoabrantes.com>
* LogLine: optionally highlight search based on syntax highlighting state
* Log Details: support multiple details open
* Translations
* Add test
* LogLine: allow to highlight frontend searches
* LogLine: improve hover vs details displayed colors
* LogLineDetails: add scroll to log line option and improve toggling behavior
* Translations
* LogLineDetails: prevent sidebar re-rendering
* LogLineDetails: more tests
* Add frontend redirect to login
* Make Login topnav link do a page transition to login page
* Force AppChromeState update when route changes to get new isChromeless state
* Add base url to SignInLink, and add tests
* wrap login page in <Page />
* comment, test
* fix loginPage test
* rejigger signin check, remove chrome from deps
* Add time range to tags and tag value requests
* Prettier
* Change timeRangeForTags to number and dropdown with options
* Listen to changes and update docs
* Update docs
* Prettier
* Text updates
* Extract getOptionsV2 params to type
* Use this.tagsForTimeRange
* Docs and move section up
* Prettier
* Update docs
* reimplement original design
* update button with responsive design that matches other elements in top bar; add comprehensive unit tests
* add a basic call out in docs for new button
* remove doc changes
* Table: Force tableNextGen to be true for Playwright and false for Cypress
* RDG query for body text contains the headers too
* add some simple tests for row height
* dial in the row height test a little more
* more updates
* filters, pagination
* try this on CI
* more updates to the tests
* more tests
* wait for some sort stuff to flush
* replace class selectors for rdg
* target the click to the anchor in the header
* Basic implementation of inline library panel
* modify the warning message, we support the export partially by converting regular panels the library panels
* Improve message around the conversion, keep it concise
* Fix linting
* Refactor conversion, extract existing logic into new funcition and reuse it
* remove unnecesary comment
* show error notification when library panel does not load
* Apply PR feedback, remove unnecesary try catch and return json with error, don't throw
* Add unit tests
* Fix monitoring report, add case when v2 is loaded originally or when transformed from v1
* Add unit tests for detect libraryPanels, relevant for ensure monitoring is correct
* Move .git to repository packages
* Bump nanogit 2025-07-17
This version handles `.git` extension internally so that the client
doesn't have to worry about it
* Put back mutation for Github
* Mutate also git URL for clarity
2025-07-18 13:25:21 +02:00
8057 changed files with 761595 additions and 273849 deletions
'Add noMargin prop to Card components to remove built-in margins. Use layout components like Stack or Grid with the gap prop instead for consistent spacing.',
'Add noMargin prop to Field components to remove built-in margins. Use layout components like Stack or Grid with the gap prop instead for consistent spacing.',
This is directory which stores Go modules with pinned buildable package that is used within this repository, managed by https://github.com/bwplotka/bingo.
- Run `bingo get` to install all tools having each own module file in this directory.
- Run `bingo get <tool>` to install <tool> that have own module file in this directory.
- For Makefile: Make sure to put `include .bingo/Variables.mk` in your Makefile, then use $(<upper case tool name>) variable where <tool> is the .bingo/<tool>.mod.
- For shell: Run `source .bingo/variables.env` to source all environment variable for each tool.
- For go: Import `.bingo/variables.go` to for variable names.
- See https://github.com/bwplotka/bingo or -h on how to add, remove or change binaries dependencies.
"comment":" please add one or more appropriate labels. Here are some tips:\r\n\r\n- if you are making an issue, TODO, or reminder for yourself or your team, please add one label that best describes the product or feature area. Please also add the issue to your project board. :rocket:\r\n\r\n- if you are making an issue for any other reason (docs typo, you found a bug, etc), please add at least one label that best describes the product or feature that you are discussing (e.g. `area/alerting`, `datasource/loki`, `type/docs`, `type/bug`, etc). [Our issue triage](https://github.com/grafana/grafana/blob/main/contribute/ISSUE_TRIAGE.md#3-categorize-an-issue) doc also provides additional guidance on labeling. :rocket:\r\n\r\n Thank you! :heart:"
Since you've added the `Add to what's new` label, consider drafting a [What's new note](https://admin.grafana.com/content-admin/#/collections/whats-new/new) for this feature.
if [[ "${{ github.event.pull_request.head.repo.fork }}" == "false" ]]; then
echo "> !!! Please link Enterprise and run 'make gen-go', then commit the changes to both repositories."
echo "> !!! Please synchronize the grafana OSS and grafana enterprise code bases as defined in the enterprise readme, then run 'make gen-go' in the OSS folder and commit the changes to both repositories."
else
echo "> !!! Please run 'make gen-go' and commit the changes."
fi
exit 1
fi
# This is the job that is actually required by rulesets.
# We want to only require one job instead of all the individual tests.
# Future work also allows us to start skipping some tests based on changed files.
required-go-workspace-check:
needs:
- check-workspace
- check-wire
# always() is the best function here.
# success() || failure() will skip this function if any need is also skipped.
# That means conditional jobs will fail the entire requirement check.
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.