* Docs: Adding clarification for resetting adming password with CLI with external DB
* adjusting bulleted points
* Cutting unneeded wording
* adjusting wording to avoid Grafana being possessive
* Changing Postgres to PostgreSPQL
* experiment v2 to v1 in exporting
* refactor code to export to v1 resource
* Add unit test and fix linting
* fix typescript
* fix linting
* handle error gracefully when is not possible to convert to v1
* feat(sql): allow custom table names in TableSelector
Restores the ability to enter custom table names not present in the database
by adding `allowCustomValue` to the Select component. This matches previous
functionality where users could manually specify table names not returned
by db.tables().
fixes: #106348
* empty line 45
* Add group and namespace filtering for GMA rules
* Add group and namespace filtering for DMA rules
* Fix view mode handling
* Preserve group and namespace filters when switching views
* update "no rules" logic for Grafana managed rules
* use groupFilter function for filter logic
* Add populateCache docs, tidy up api consts
* Fix imports in tests
* Fix failing import tests
---------
Co-authored-by: Gilles De Mey <gilles.de.mey@gmail.com>
* docs(alerting): Import to Grafana-managed rules
* apply latest evaluation changes
* Add additional conversion details to How it works section
* fix ref link
* fix Data source input name
* more details about the `Target data source` input
* RepeatRowSelect: Use Combobox instead of deprecated Select component
* Add test (broken)
* Don't disable combobox if repeat is set
* Run i18n-extract
* add mockGetBoundingClientRect to combobox test
---------
Co-authored-by: Sergej-Vlasov <sergej.s.vlasov@gmail.com>
* refactor(grafana-ui): move all exports from components barrel file to entry point
* refactor(grafana-ui): move all exports from types barrel file to entry point
* refactor(grafana-ui): explict exports for utils
* refactor(grafana-ui): move themes to explicit exports
* refactor(grafana-ui): use explicit exports for options, slate-plugins and schema
* fix(grafana-ui): put back missing components
* chore(grafana-ui): delete first level barrel files
* refactor(grafana-ui): update all internal barrel file imports
* refactor(grafana-ui): start fixing storybook mdx files
* style(grafana-ui): fix linting issues, update betterer result
* chore(grafana-ui): delete nested component barrel files
* refactor(grafana-ui): update imports to use non-barrel files
* refactor(grafana-ui): update imports to non-barrel files for story and test
* fix(grafana-ui): put back missing FileListItem component and types
* refactor(grafana-ui): update mdx to use direct imports
* fix(grafana-ui): align exports with grafana 12
* LogList: create font size option
* LogList: prevent option fontSize bouncing
* LogListContext: fix stored container size bigger than container
* LogList: render smaller font size
* virtualization: adjust to variable font size
* virtualization: strip white characters of at the start successive long lines
* LogList: add font size to log size cache
* LogList: use getters instead of fixed constants
* LogLine: prevent unnecessary overflow calls
* virtualization: strip ansi color codes before measuring
* LogListDetails: adjust size on resize and give logs panel a min width
* LogsPanel: add showControls as a dashboard option
* virtualization: update test
* virtualization: add small test case
* processing: update font size
* LogListControls: update test
* Extract translations
* Logs Panel: enable controls by default
* LogListContext: update mock
* ControlledLogRows: add missing prop
* LogLine: remove height ref
* LogList: dont touch the debounced function on successive calls
* LogLine: update test
* LogsPanel: make controls default to false again
* LogsPanel: make controls default to false again
* LogLineDetails: fix height resizing and make close button sticky
* LogLine: memo log component
* LogLineDetails: fix close button position
* New Logs Panel: Add Popover Menu support (#106394)
* LogList: add popover menu support
* LogList: test popover menu
* Chore: remove unnecessary optional chain op
* LogLinedDetails: fix close button position with and without scroll
* Alerting: Use default_datasource_uid as the default target for recording rules
* Add tests
---------
Co-authored-by: Konrad Lalik <konradlalik@gmail.com>
* Add pills in search bar for context
* Add scope actions
* Add selection functionality
* Show selected scope on secondary row
* Fix selected scope titles
* Add some basic tests
* Test for toggle by name
* Remove unnecessary mocking
* Small cleanups
* Lint fixes
* Fix test
* Update public/app/features/scopes/selector/ScopesSelectorService.ts
Co-authored-by: Tobias Skarhed <1438972+tskarhed@users.noreply.github.com>
* Bump input and breadcrumbs test
* Change breadcrumbs color
* Makes the breacrumb spacing consistent
* Add basic global search
* Change scope selector data structures
* Fix scope selector functionality
* Fix errors in selector and cmdk actions
* Fix cmdk actions
* Fix global search in cmdk
* Fix some merge edits
* merge diffs
* Small merge fixes
* Fix ScopesSelectorService.test.ts
* Fix tests
* Remove unrelated lint fixes
* Move ScopesTreeItemList.tsx into separate file
* Simplify if condition
* Use node.title in the scopesRow
* Use better dependency array for actions
* Make recentScopes more robust
* Fix beterrer
* Update betterer file
* Add test for changeScopes early return
* Fix input tooltip title access
---------
Co-authored-by: Tobias Skarhed <1438972+tskarhed@users.noreply.github.com>
pkgs/tsdb/[grafana-pyroscope-datasource|parca]: Fix use of request headers in responses
In the parca and the grafana-pyroscope-datasource we were wrongly using the request headers instead of the response
header when communication the results to the backend.
This PR fixes this bug.
Was reported by an user via community slack, who faced issues, with a request header of `content-length: 0` being
inserted by a intermediate proxy.
What is this feature?
Ensures that resolved notifications are sent when alert states transition from Error to Normal after the configured number of evaluation intervals: Missing series evaluations to resolve.
Why do we need this feature?
Before this change, when an alert was transitioning from Error to Normal, in case when the labels on the new Normal alert instance are the same, Grafana would not send resolved notifications for the Error alert state. The alert would be resolved after a few evaluation intervals automatically in the alertmanager, following the endsAt.
With this change the resolved notification is sent after the configured number of evaluation intervals: Missing series evaluations to resolve.
The help text for active timings on an alert was confusing, indicating that the time range would cause the alert not to
notify, when it actually works as the only time the alert would notify.
* SCIM: fix provisioned user role assignment from SAML assertion
* revert org_sync_test changes
* clean up tests
* skip user lookup during org sync
* sanitize log output
* only log non-sensitive fields
* grafana-data: Fix error when field values are null
* Slightly terser
* update frame test to have falsy value that should be kept
remove null string output from null value test
* handle falsy frame values as non-null
---------
Co-authored-by: samsch <git@samsch.org>
What is this feature?
Fixes a bug when group-level query_offset and labels parameters are ignored and not saved
Why do we need this feature?
In the import API Prometheus YAML rule definitions are supported:
groups:
- name: group-1
interval: 1m
query_offset: 10m
labels:
severity: "warning"
rules:
- alert: Alert 0 > 0
expr: vector(0) > 0
But applying group-level labels and query_offset is broken and they are not saved right now because during the conversion of the API model to PrometheusRuleGroup they aren't saved to the new structure.
* Zanzana: Split client and server logs
* Zanzana: Improve error handling and logging
* log internal error at the server side
* refactor
* improve errors for list request
* update go modules
* handle errors for read and write
* refactor
* reset go.mod changes
* Alerting: Optimize prometheus api permission checks
This improves the performance of the Prometheus API by performing the permission checks for rule read permission in a folder upfront, rather than checking permissions for each rule group individually. This reduces the number of permission checks and should speed up the API response time.
* refactor vars
---------
Co-authored-by: Konrad Lalik <konradlalik@gmail.com>
When a rule configured with `ExecErrState` state of `Alerting`, has an instance which is Alerting then has a data source error, then successfully evaluates and continues to be Alerting, the cached instance keeps the error cached until it is no longer firing.
This is unexpected and leads to misleading results.
* docs(alerting): new notification template example: link to a dashboard with time range
* remind configuring the `MyDashboardURL` annotation
* Update docs/sources/alerting/configure-notifications/template-notifications/examples.md
Co-authored-by: Matthew Jacobson <matthew.jacobson@grafana.com>
---------
Co-authored-by: Matthew Jacobson <matthew.jacobson@grafana.com>
* docs(alerting): remove admonition to an outdated tutorial
* amended note and link to new tutorial
* link
* minor copy changes
* run prettier
* update copy
---------
Co-authored-by: tonypowa <tonypowa@gmail.com>
* Alerting docs: document ability to import rules to GMA from Prometheus YAML
documentation for prom YAML import feature.
- took out reference that said users can't import prometheus rules in the tool.
- added the More > Import alert rules UI path to the tool
- added a step for the YAML file upload button.
* 💅prettier✨
* Update _index.md
* Add export folder action to the new list view
* merge folder actions in one more button
* fix checking permissions
* remove commented code
* early return when no bulkactions are allowed
* fix css width
* address review comments
* move BulkActions component outside the parent component
* remove unnecessary check
* bring back accidentally removed code
* remove duplicated modal
* TraceView: Resource attributes links extension point
* Add data source info to context
* Remove console log
* Removing unused linkGetters and more
* More tests
* Fixing last todos
* Fixing
* Fixing
* Change link style
* Rename extension context
* Fix lint error
* LogsPanel: integrate new panel via feature flag
* Log Line: move sampled/errors/deduplication count outside of log line body
* LogList: increase overscan count
* Logs Panel: enable deduplication for infinite scrolling
* Logs Panel: remove margin overflowing drilldown
* Logs Panel: add missing dependency to effect
* Logs Panel: pass missing callback
* Remove console log
* LogLine: show cursor pointer only when interactable
* LogLineDetails: make resize handler more obvious
* LogsPanel: add missing props to from panel
* LogLineMenu: add support for custom items
* LogsPanel: pass custom menu items to LogList
* Fix imports
* Chore: comments and missing argument
* LogLineMenu: pass log to event listener
* LogListContext: filter log details when no longer present in the new response
* chore: log
* LogsPanel: conditionally show options per feature flag status
* LogLine: align logs when some of them are sampled or with errors
* Chore: update tests
* LogLineMenu: test custom options
* LogsSamplePanel: show controls
* LogsPanel: move return after hooks to prevent bugs
* ds-querier: add new metric for the total request
Co-authored-by: Sarah Zinger <sarah.zinger@grafana.com>
* fix logger and trace
Co-authored-by: Sarah Zinger <sarah.zinger@grafana.com>
* ds-querier: rewrite downstream 500s to 400
---------
Co-authored-by: Sarah Zinger <sarah.zinger@grafana.com>
What is this feature?
This PR fixes the MissingSeriesEvalsToResolve behavior when it's set to more than 4 evaluation intervals.
Why do we need this feature?
The MissingSeriesEvalsToResolve setting was not working correctly due to alerts being auto-resolved by Alertmanager after 4 evaluation intervals (via the endsAt field).
Before we had deleteStaleStatesFromCache method that was returning only stale states that had to be resolved. Non-stale states for which the current evaluation does not have a series never had endsAt updated and were never resend to the Alertmanager, so they were automatically resolved after 4 evaluations regardless of the setting.
The new processMissingSeriesStates returns state for each missing series on every evaluation, and resolves the stale ones. This guarantees that alerts without series still alert for the configured number of evaluations.
* re-organize folders regarding import feature
* Revert folder changes
* Add Yaml import input fields
* Set recording rules target if empty
* wip
* Convert YAML content to RulerRulesConfigDTO and use this for the import payload
* fixing some issues
* wip
* add tracking
* use yaml filename for namespace in case is not specified in the yaml content
* refactor
* add alertingImportYAMLUI ff check for yaml option
* Add test for parseYamlToRulerRulesConfigDTO
* move import feature to the More menu at the top
* add test for filterRulerRulesConfig, and fix the function
* extract parseYamlToRulerRulesConfigDTO to a separate file
* Add permission check for the import button
* Change data flow in import form, add basic tests for the import form
* remove commented code
* Add yaml import form test
* Add more tests
* Tidy up, remove type assertions in yaml converter
* Improve yaml file validation in the form
* Fix lint issues
* Fix lint
* use only Admin role for checking if the feature is available for the user
* Fix parsing recording rules
* Fix file re-selection in YAML import
* prettier
* refactor
* Remove FileReader, add more explanation to file upload reset
---------
Co-authored-by: Konrad Lalik <konradlalik@gmail.com>
* update TableNG to use the grafana fork of react-data-grid, which supports React 18
* react-data-grid got rid of their CJS
* fix jest.config formatting
* Docs: Adding info on configuring cors via reverse proxy
* Adding info regarding grafana.ini CORS configuration
* some clarification and typo fixes
* expanding the instructions
* run prettier
* fixing indentation
* adjusting an admonition
* adjusting information based on review
* Pyroscope: Add annotations frame to series response
* Adapt to API change, add tests
* Run make lint-go
* Fix conflicts after rebase
* Add annotation via a separate data frame
* Process annotations fully at the datasource
* Add mod owner for go-humanize
* Pyroscope: Annotations in Query Response can be optional
---------
Co-authored-by: Piotr Jamróz <pm.jamroz@gmail.com>
* first
* second
* third"
* 4th
* format
* typo
* $labels
* all pretty no pity
* order
* order2
* typo
* order4
* link renamign
* titles
* test without title heading
* test with colon in h1
* removed H1s
* save transparent setting
* make sure we test both transparent and non transparent
* no more legacy rows
* schema changes
* Add testing, fix first row offset
* Remove legacy row from transform test
* Remove panel that's not present in layout
* Remove expects after removing the row, fix lint issues
* Remove unused commit
* update codegen
* update openapi snapshot
* Fix snapshot
* add missing default prop
* Fix repeating, fix first row, fix not flushing last row
* Use correct repeater
* fix lint, remove unused empty check
* update codegen
* update openapi test snapshot
* Create libpqToPGX feature toggle
* Refactor PostgreSQL datasource to support PGX with feature toggle
- Updated `ProvideService` to accept feature toggles for enabling PGX.
- Modified integration tests to use the new PGX connection method.
- Introduced new functions for handling PGX connections and queries.
- Enhanced TLS configuration handling for PostgreSQL connections.
- Updated existing tests to ensure compatibility with PGX and new connection methods.
* Update PostgreSQL datasource to enhance connection pooling and error handling
- Increased `MaxOpenConns` to 10 in integration tests for improved connection management.
- Refactored connection handling in `newPostgresPGX` to return a connection pool instead of a single connection.
- Updated health check error handling to utilize context and feature toggles for better error reporting.
- Adjusted `DisposePGX` method to close the connection pool properly.
- Enhanced query execution to acquire connections from the pool, ensuring efficient resource usage.
* Cleanup
* Revert postgres_test unnecessary changes
* Rename feature toggle from `libpqToPGX` to `postgresDSUsePGX`
* Add null check to dispose method
* Fix lint issues
* Refactor connection string generation
* Address comment in health check file
* Rename p to pool
* Refactor executeQueryPGX and split into multiple functions
* Fix lint issues
* The returning error message from PGX is enough no need to separate the error code.
* Move TLS handling to newPostgresPGX function
* Disable ssl for integration tests
* Use MaxIdleConns option
* Remove old feature toggle
* Rename`generateConnectionConfigPGX` to `generateConnectionStringPGX`
* Add back part of the error messages
* Don't show max idle connections option when PGX enabled
* Address comments from Sriram
* Add back Sriram's changes
* PostgreSQL: Rework tls manager to use temporary files instead (#105330)
* Rework tls manager to use temporary files instead
* Lint and test fixes
* Update pkg/tsdb/grafana-postgresql-datasource/postgres.go
Co-authored-by: Ivana Huckova <30407135+ivanahuckova@users.noreply.github.com>
* Update betterer
---------
Co-authored-by: Ivana Huckova <30407135+ivanahuckova@users.noreply.github.com>
---------
Co-authored-by: Ivana Huckova <30407135+ivanahuckova@users.noreply.github.com>
* use -C when go-mod-dir is provided
* remove unused target variable
* use my branch for testing
* fix syntax?
* use condition in bash instead
* dagger-for-github doesn't support multiline command
* just skip using the composite action
* update setup-go
* add missing space
* grafana-main -> .grafana-main
* use 'patch' as version
* use generated token for cloning / pushing
* colons in wrong place
* update generate-token action
* reduce permissions needed
* add org prefix to repositories list
* ok the repo names did not work like that
* pull-request -> pull_request
* add workflows: write permission
* push branch on dry_run
* Add missing DRY_RUN flag
* initialize LATEST_FLAG as array
* use RELEASE_BRANCH as the base branch
* use workflow in main
* done testing; use main
* LogList: add version with no scroll
* LogList: fix support for permalinked and pinned logs
* LogLineDetails: improve resizable
* LogList: improve height adjustment when details are open
* LogList: let the people select text
* Revert "LogList: add version with no scroll"
This reverts commit f26cdce696.
* LogList: update test
* New Logs Panel: rename permalinkedRowId to permalinkedLogId
* LogListContext: update mock
* ControlledLogRows: implement custom scrollIntoView
* Logs Panel: fix re-render regression
* LogLine: tweak hover and expanded colors
* Update API docs for team groups search
* update team sync doc
* remove param block
---------
Co-authored-by: Gabriel Mabille <gabriel.mabille@grafana.com>
* feat: map GF_INSTALL_PLUGINS to use preinstall plugins feature
* ref: process GF_INSTALL_PLUGINS as sync install
* fix: check GF_INSTALL_PLUGINS_FORCE in the docker run
* ref: use preinstall_sync for GF_INSTALL_PLUGINS
* ref: logs and deprecation msg for GF_INSTALL_PLUGINS
* chore: deprecated log formatting
* Home: update setup guide link/title to Getting Started Guide
* Home: check plugin presence to show getting started guide
* Home: remove now unused homeSetupGuide feature toggle
* Home: use sentence case for Getting started guide item
* Fix static handler redirect logic to ensure proper clean up URLs before redirection.
(cherry picked from commit f50ec8e0d10c24fd79f6c454974a2fc6e9694ef2)
* make serializer a single source of truth for passing k8s props on save
* remove resourceVersion when updating
* don't pass result.version to resourceVersion
* remove k8s update on saveCompleted from dash scene
* Authz: Define app resources
* Add coreroles and cluster roles
* Restore CODEOWNERS from main
* ManagedPermissions -> ResourcePermissions
* Rework changes
* Update apps/authz/kinds/v0alpha1/rolebindingspec.cue
Co-authored-by: Alexander Zobnin <alexanderzobnin@gmail.com>
* Update apps/authz/kinds/v0alpha1/rolespec.cue
Co-authored-by: Alexander Zobnin <alexanderzobnin@gmail.com>
* Make
* WIP first set of comments
* typox
* Copy folder Makefile
* Remove uid
* Rename authz -> iam
* Rename to iam
* Dockerfile
* Remove name
* Mv up
* Try with postprocess
* linting
* Use same version
* apimachinery v0.32.3
* update-workspace
---------
Co-authored-by: Alexander Zobnin <alexanderzobnin@gmail.com>
* add script for tooling
* add to make
* not to forget
* reworked go tools
* add tool installation script
* adding readme
* updating readme
* updating readme
* cleanup install.sh and makefile
* update the readme file
* cleanup scripts
* switch variables.mk to lazy evaluation
* add tools ache to gitignore
* get rid of absolute path in hte Variables.mk file
* switch to reusable function for path generation
* add debug statements
* add create cache tool dir
* add debuig statements to make file
* drop tool cache
* fix race condition n ci
* fix race condition n ci
* cleanup workspace
* add lefthook.rc to codeowners
* copy .citools folder to docker image
* switch back to main branch of grafana-build
* Add .citools to the drone builder
* fix wording in generate.sh and README.md
* Add empty state handling for GMA rules
* Add handing empty states for Grafana and Datasource rules
* Update translations, fix lint errors
* Add empty state translation
* WIP layout update
* implement hover styles
* update pagination
* fix list item indent
* clean up actions part 1
* only apply text fill to v2 list view
* add missing returnTo for rule viewer
* fix list styles for list view
* i18n
* update bulk actions to regular folder actions for list v2
* fix a few tests
* simplify paginated loaders for new list view
* i18n
* more UI feedback
* fix test
* comment
---------
Co-authored-by: Gilles De Mey <gilles.de.mey@gmail.com>
* Dashboards E2E - edit pane - query variable
* update test to use gdev cloudwatch; remove duplicate label and mocks
* wait for the api call to fetch the editor options
* Rename Annotations 'Options' to 'legacyOptions'
* use new legacyOptions in StandardAnnotationQueryEditor
* use new legacyOptions in transformSaveModelSchemaToScene
* use legacyOptions in transformSceneToSaveModelSchemaV2
* Fix bug with ds query editors not taking the latest state
* update snapshot
* update unified storage README with instructions on how to run the distributor locally and fix race condition causing the server to crash on startup randomly
When we have labels selected and want to refresh the list of metrics that match this grafana would use an expensive
/api/v1/series call instead of /api/v1/label/__name__/values with matchers, even if the datasource is configured to be
ble to use matchers in label values calls.
Signed-off-by: Michael Hoffmann <mhoffmann@cloudflare.com>
* Dashboards/E2E: Add test validating panel title and description modification
* Use component selector for headerContainer
* Add flows for changing panel title and description
* setup distributor module
* move lifecycler into resource server provider
* remove ring/client pool setup from distributor module and use the same ring/client pool between storage server module and distributor module
* implement resourcestore server methods
* make healthcheck fail if ring is not running
* fix filesChanged command
* try this instead
* try again...
* try again...
* AGAIN
* maybe?
* maybe?
* just trying this up, im pretty sure this is what it was originally
* Revert "just trying this up, im pretty sure this is what it was originally"
This reverts commit a036cbb32f.
* directly use crowdin-download output
---------
Co-authored-by: joshhunt <josh.hunt@grafana.com>
* Provisioning: Refactor createOnCacheEntryAdded
* Use custom list resource type
* add generated types and transformers
* Switch to type guards
* Do not create new array
* replace usage of folder guardians with access control evaluators
* remove NewByFolderUID guardian
* bring up to date
* fix test
* more test fixes, and don't fetch the folder before evaluating lib element access
* change what error is returned
* fix alerting test
* try to fix linter errors
* replace the use of newByFolder guardian with direct access control evaluator checks
* remove newByFolder guardian
* get rid of dashboard and folder guardians
* undo unwanted change
* undo unwanted change
* undo unwanted change
* update code owners
* docs: edits for alerting learning content
edits for alerting learning content
* vale'd
* left nav change
* final adjustments
link fixes and the like
* Update _index.md
docs: remove content for legacy graph panel
Given the legacy panel is not compatible with G12 - our current docs should not cover it and we can remove from the page
* add pr-patch-check-event workflow_call
* remove unneded permission
* sender -> sender_login
* Add my branch as a target for testing
* fix branch name
* use pull_request event
* fix repo in list
* maybe repositories not prefixedby org?
* fix permissions
* remove my branch
* Missing @
* Add missing CODEOWNER entry
* call workflow from my branch and add oidc debugger
* add my branch to list for testing
* remove my branch; use workflow from main; remove oidc debug
* retrigger CI
* replace usage of folder guardians with access control evaluators
* remove NewByFolderUID guardian
* bring up to date
* fix test
* more test fixes, and don't fetch the folder before evaluating lib element access
* change what error is returned
* fix alerting test
* try to fix linter errors
* replace the use of newByFolder guardian with direct access control evaluator checks
* remove newByFolder guardian
* remove unintentional changes
* remove unintentional changes
* undo unwanted change
* ds-querier: handle execute errors better
* fix: change how GetResponseCode works to return 418 if rsp is nil
418 is a bit of an easter egg which in this case works since we don't
have an rsp but we do know something went wrong, so a 200 won't work.
Also changed this to return the code in the frame, not sure why we
weren't.
* tests: fix GetResponseCode tests
* log no rsp case
* bring back og error log
* feat: preinstall_sync config - process and installation logic
* ref: add preinstall_sync list to preinstalled plugins of frontendsettings
* fix: conf blank line for sections
* ref: remove plugins async flag, and rename PreinstallPlugins
* docs: default installed plugin list
* move preserve to scenePage level, fix issues with restoring variables and failing to reload dd
* refactor and fix preserve/reload url state
* cleanup
* lint
* lint
* reference this PR in comment
* feat: remove kube-aggregator for OSS and provide injection points with runner iface
* upgrade authlib to support expiresIn
* new FT
* new FT again
* update go.mod
* get rid of the slice implementation
* reconcile conflicts
* gracefully handle enterprise not being linked situation with kubeAggregator FT true
* allow dataplane agg and kube agg to both be added to delegate chain
* make update-workspace
* address feedback
* revert go.mod changes
* go.mod updates
* elaborate on why and how of skipping the Ready channel handling
* after rebase and make run
* replace usage of folder guardians with access control evaluators
* remove NewByFolderUID guardian
* bring up to date
* fix test
* more test fixes, and don't fetch the folder before evaluating lib element access
* change what error is returned
* fix alerting test
* try to fix linter errors
* we don't assign general folder write permissions, reverting to the previous logic for general folders
* start marking up azuremonitor
* more markup
* finish mark up
* add package and correct imports
* convert to functional component + use correct t import
* fix duplicate key + typo
* add extract config + fake french translations to test
* run prettier and fix unit tests
* use nx
* enable i18n lint rules for azure monitor
* remove fake french translations
* await initPluginTranslations
* top level await breaks unit tests
* leave as class component for now
* Dependencies: Bump github.com/getkin/kin-openapi from v0.131.0 to v0.132.0
* Dependencies: Bump github.com/openfga/openfga from v1.8.6 to v1.8.12
* Dependencies: Bump golang.org/x to latest
* docs(alerting): Add two common examples in `Learn` section
* Update docs/sources/alerting/learn/examples/multi-dimensional-alerts.md
Co-authored-by: Johnny Kartheiser <140559259+JohnnyK-Grafana@users.noreply.github.com>
* Update docs/sources/alerting/learn/examples/multi-dimensional-alerts.md
Co-authored-by: Johnny Kartheiser <140559259+JohnnyK-Grafana@users.noreply.github.com>
* mention `summary` annotation in multi-dimensional alerts example
* Remove note about alert grouping
* minor edits to section: `Differences with time series`
* minor grammar change
---------
Co-authored-by: Johnny Kartheiser <140559259+JohnnyK-Grafana@users.noreply.github.com>
* update docs on how to configure SCIM with okta
* fix enterprise link
* add introductory paragraph under "Configure provisioning settings"
This paragraph has been added to avoid stacked headings that break the flow of the documentation and hurt SEO
* split SCIM connector base URL config for cloud and onprem
---------
Co-authored-by: Irene Rodríguez <irene.rodriguez@grafana.com>
* chore(e2e): update plugin-e2e to canary version for testing
* chore(e2e): bump playwright/test to 1.52.0
* empty commit
* chore: bump to major version
* Trigger build
---------
Co-authored-by: Hugo Häggmark <hugo.haggmark@gmail.com>
* Dependencies: Bump github.com/openfga/openfga from v1.8.6 to v1.8.12
* Linter: Replace x/exp/rand with math/rand/v2
* NGAlert: Fix test after linter fixes
Adds settings for SQL expressions:
sql_expression_cell_output_limit
Set the maximum number of cells that can be returned from a SQL expression. Default is 100000.
sql_expression_timeout
The duration a SQL expression will run before being cancelled. The default is 10s.
Grafana frontend code sends adhoc filters to the backend in both the
`tags` and `adhocFilters` params.
The values in `tags` have dashboard variables interpolated, while those
in `adhocFilters` don't. This PR updates the frontend code to
also interpolate variables into the `adhocFilters` param.
The duplicated values are left as they are in `tags`, in case some other
spooky code at a distance relies on that.
* Table: Avoid creating links in cells when data links have empty href
* Copy logic to TableNG
* Do not add non-clickable links to context menu
* Don’t pass if undefined
* Add tests to cover datalink logic changes
* Trigger Build
---------
Co-authored-by: Kristina Durivage <kristina.durivage@grafana.com>
Co-authored-by: Adela Almasan <adela.almasan@grafana.com>
* Ignore locales files more generically
* Use `ignore-path` for prettier
If we don't specify this, it will use `.gitignore` as well, which will ignore enterprise files.
This means that the code in enterprise will drift and easily ends up with prettier issues
* add e2e for grouping into tabs and rows
* enable kubernetesDashboards feature toggle for e2e tests
* remove unnecessary kubernetesDashboard feature flag enablement
* refetch when series limit is changed
* when series limit is empty use the default series limit
* tests for timerange handling
* attempt to reduce the test file size
* remove ineffective memory tests
* update test
* clearer tests
* update help text
* update limit tooltip
* rename /mtfe route to /femt to match project name
* set correct navTree JSON property name
* call GetWebAssets in the request handler to prevent stale assets during development
* Call /bootdata and render grafana
* set nonce on script
* write csp header in index handler
* write report-only csp as well
* debug stuff
* more debug logging
* move importing app into a seperate, async-loaded module
* Clean up comments
* make /femt redirect to / in the frontend
* remove console.log
* remove stale commented code
* call __grafana_load_failed if bootstrap fails
* comment for __grafana_boot_data_promise
* remove console.log
* remove blank newline
* codeowners
* Spike: Extras
* Attempt to wire it up
* Hack
* Fix issue with jobs
* Wire more things up
* Fix more wiring stuff
* Remove webhook secret key from main registration
* Move secret encryption also outside register
* Add TODOs in code
* Add more explanations
* Move connectors to different package
* Move pull request job into webhooks
* Separate registration
* Remove duplicate files
* Fix missing function
* Extract webhook repository logic out of the core github repository
* Use status patcher in webhook connector
* Fix change in go mod
* Change hooks signature
* Remove TODOs
* Remove Webhook methos from go-git
* Remove leftover
* Fix mistake in OpenAPI spec
* Fix some tests
* Fix some issues
* Fix linting
Adds ability to set notifications settings using the Prometheus conversion API.
The API now supports a new optional header: X-Grafana-Alerting-Notification-Settings which can be used to specify notification settings.
The value of the header is the AlertRuleNotificationSettings structure in JSON:
mimirtool rules load alerts.yaml --extra-headers 'X-Grafana-Alerting-Notification-Settings: {"receiver": "my-webhook", "group_by": ["cluster", "pod"]}'
set folder permissions to "view"
alerts are allowed to be created in folders where the user only has the
"read" permission, "write" permissions is not required and is only used
to allow creating new folders.
When interpolating variables in the frontend, we want to be sure to
escape special characters if the variable is used in a regex.
We used a regex to find regexes in raw queries, which contained a bug.
The regex treated any `/` character as the start of a regex. However,
InfluxQL (and most sql dialects) support using `/` as a division
operator.
This PR adds a check for `=~` or `!~` immediately preceding `/` as the
beginning of a regex, as per the InfluxQL spec for regexes:
https://docs.influxdata.com/influxdb/v2/reference/syntax/influxql/spec/#regular-expressions
Fixes https://github.com/grafana/support-escalations/issues/16219
provision Prometheus: added example field how to set the scrape interval
When using Prometheus as a datasource Grafana can optionally know the scrape interval of Prometheus. In the GUI it is easy to spot, however when provisioning the datasource the example was lacking this information.
This commit adds this missing field as an example.
* Update grafana alerting from de176b4a0309 to 83b6de6b0a35
Includes:
- https://github.com/grafana/alerting/pull/319
- https://github.com/grafana/alerting/pull/317
* Remove unused SendWebhook method from sender struct
grafana/alerting hasn't used the grafana webhook sender for a while now,
so this method is no longer used anywhere.
- Removed SendWebhook from the sender struct and rename it to emailSender
so that its use is clearer.
- Also, for similar reasons, the Webhook method on Grafana's
webhook sender `sendWebRequestSync` should not call grafana/alerting code for
NewTLSClient. The previous grafana/alerting function is vendored into grafana.
* Use BuildReceiverIntegrations new func signature
* Mark labels and annotations as optional in Grafana ruler DTO
* Refactor AlertsFolderView to use folder-specific endpoint for rules loading
* Improve tests for BrowserFolderAlertingPage
* Update translations
* Revert go changes
* update gen files
---------
Co-authored-by: Gilles De Mey <gilles.de.mey@gmail.com>
* query variable editor
* add regex, sort, refresh
* make the label and spacing consistent
* add test for changing datasource
* make the preview label consistent with all labels on the editor
* Remote Alertmanager: Consider auto-gen routes when flagging a config as 'default'
* remove always-nil error from isDefaultConfiguration
* remove unnecessary context.Background() in test
* pass orgID to autogenFn call during AM creation
* fix test
* make update-workspace
* Fix incorrect country for Asia/Singapore timezone
* Add test
* link to gh issue
* skip test
---------
Co-authored-by: joshhunt <josh.hunt@grafana.com>
* remove deprecated annotation support and introduce the new one
* create annotations.test.ts
* convert the old annotations to new format
* don't override query if it has necessary fields
* a better implementation
* remove comment
* fix
* fix react errors
* unit tests for annotation query editor
* two more tests
* add active_time_intervals to route model
* update k8s compat layer
* update notification policies service to validate active time intervals
* update integration tests
* update openapi
* add active time interval to model
* update route generator to include active time interval
* Update storage list and rename methods to handle active intervals
* update api model
* update provisioning and export models
* update ui to allow active timing config
* update i18n
* fix snapshots for ui tests
* run prettier
* Alerting: Active time intervals UI naming (#104402)
* update naming in UI
* update naming in the edit page title
* update translations
* update alerting module
---------
Signed-off-by: Yuri Tseretyan <yuriy.tseretyan@grafana.com>
Co-authored-by: Sonia Aguilar <33540275+soniaAguilarPeiron@users.noreply.github.com>
Co-authored-by: Sonia Aguilar <soniaaguilarpeiron@gmail.com>
* refactor: remove unused code in the function
* test: add unit tests for admission handler
* Revert "refactor: remove unused code in the function"
This reverts commit b8f48dbdbf.
* revert: added again due to incorrectly made test scenario
* test: add unit tests for admission handler
* Re-enable `jsx-a11y` recommended rules
* apply rule in correct place, couple of fixes
* fix up some a11y issues
* add ignore for keyboard a11y for now
* readd testid
* close carousel on backdrop click
* use type="button"
---------
Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
* Stop appending subpath in onNavigateToExplore function old-arch
* we are using assureBaseUrl inside getExploreUrl function
* adjust test to ensure subPath is not added to the url
* fix linting
* Add pause/unpause bulk actions button in the alert list view
* add delete bulk action
* Add tracking and refactor FolderActionMenuItem
* update translations and text
* update text
* add finally
* use ability for delete action
* don't show bulk actions if no action is allowed
* invalidate tags for delete action
* revert invalidating and redirect to list page instead
* redirect when pausing/unpausing
* add pause/unpause endpoints
* add translations
* add folder name in delete modal
* address pr review
* disable pause/unpause
* update redirect
* remove unnecessary prop
* rename FolderActionMenuItem component to PauseUnpauseActionMenuItem
* address review comments
* fetch rules before redirecting in list view 1
---------
Co-authored-by: Gilles De Mey <gilles.de.mey@gmail.com>
Co-authored-by: Mariell Hoversholm <mariell.hoversholm@grafana.com>
* jaeger backend migration
* move processing to JaegerClient.Search
* fix upload query error source type
* suggestions
* lint
* fix link to traceid query
* fix tests
* fix tests
* use consistent types
* add tests for TransformSearchResponse fn
* test search function
* fix filtering using tags
* suggestion
* remove unnecessary arguments
* use logfmt parser for tags
* test
* test
* use logfmt for query tags
* update
* go fmt
* run backend for all queryTypes
* run make update-workspace
* assign owner to logfmt pkg in go.mod
* apply suggestions
* update tests
* trigger workflows?
* Docs: SAML docs refactoring
* Cleanup the root page
* Update the root file
* Refactor Azure AD guide
* Change the order of the tree
* Remove the index file again, back from main
* SAML UI page review and editing
* Review and edit SAML config options page
* SAML signing and encryption edit/review
* Remaining pages and aliases
* Fix PR comments
* More fixes
* Update _index.md
* Update _index.md
* Update _index.md
* Apply suggestions from code review
Co-authored-by: Misi <mgyongyosi@users.noreply.github.com>
* Handle PR comments
---------
Co-authored-by: Misi <mgyongyosi@users.noreply.github.com>
* LogLine: introduce truncation limit
* Processing: turn LogListModel into a class
* LogLine: introduce collapsed/expanded state and read from model
* Virtualization: correct extra line for controls in size
* LogLine: fix collapsed state initialization
* Add new criteria to define long lines to truncate
* Virtualization: better truncation limit
* Check collapsed state based on container size
* Update function name
* Extract translations
* LogLine: update unit test
* virtualization: add unit test
* processing: update unit test
* Fix focused test
* processing: process fields on demand
* Logs: consider loading state from explore
* LogList: improve resize and recalculation
* chore: build?
* feat: filter and sort sub tables
* chore: extract row processing into it's own function for filtering and sorting
---------
Co-authored-by: Adela Almasan <adela.almasan@grafana.com>
* add tag handler for snowflake ids
* add snowflake generator
* fill snowflake id back to the bean
* table driven test, mockable snowflake generator
* use math/rand/v2
* snowflake without time.sleep
* more explicit bitwise modulo
* rename snowflake to randomid
* use push event instead of pull_request_target
* pull request sha -> push sha
* remove PR specific stuff from pr-patch-check
* use my branch for testing
* use main now that it's working
* initial updates
* additional updates - index and config dos
* made edits, renamed the index files.
* Close unclosed shortcode
Signed-off-by: Jack Baldry <jack.baldry@grafana.com>
* updated main and config docs
* edits to query editor and templates
* final edits to landing page
* added updates
* made a few additional edits
* edits
* final edits and changes per dev feedback
* reviewed titles and headings; ran prettier
* added ref URIs
* Update docs/sources/datasources/prometheus/template-variables/_index.md
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update docs/sources/datasources/prometheus/configure/_index.md
Co-authored-by: ismail simsek <ismailsimsek09@gmail.com>
* Update docs/sources/datasources/prometheus/template-variables/_index.md
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* updates based on feedback
* ran prettier
* updates due to feedback
---------
Signed-off-by: Jack Baldry <jack.baldry@grafana.com>
Co-authored-by: Jack Baldry <jack.baldry@grafana.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: ismail simsek <ismailsimsek09@gmail.com>
* add set/get feature toggles functions to grafana/ui
* configure grafana/ui feature toggle localeFormatPreference in app init
* revert more complex approach and use contained access to global
* Bring back contact points filter
* Use GMA Prometheus endpoint as main source of truth on the list page
* refactor: improve error handling in GrafanaRuleLoader
* Refactor ChannelOptions and related components for improved secure field handling
- Updated ChannelOptions to utilize integrationPrefix for path management.
- Introduced getOptionMeta for dynamic option metadata handling.
- Enhanced ChannelSubForm to manage secure fields and subform deletions.
- Refactored OptionField and SubformField to support new secure field logic.
- Adjusted types for better clarity and integration with the form context.
* Fix Combobox sizing
* Refactor ChannelSubForm and ChannelOptions for improved field handling
- Updated ChannelOptions to enhance secure field management.
- Refactored ChannelSubForm to replace Select with Combobox for better user experience.
- Adjusted type options handling in ChannelSubForm to align with new Combobox implementation.
- Cleaned up unused code and improved overall readability.
* Refactor contact point components for improved secure field handling and remove obsolete secure settings field
- Removed secureSettings from various components and tests to streamline the receiver configuration.
- Updated GrafanaReceiverForm to manage secure fields more effectively.
- Enhanced test cases for Slack contact points to ensure proper field behavior based on user input.
- Introduced a factory for creating mock Grafana contact points and receiver configurations for better test coverage.
* Improve conversion from form values to grafana receivers
* Revert Combobox migration and bring back Select for contact point type selector
* Update Grafana OnCall to Grafana IRM in notifier settings and enhance test coverage for SNS contact points
- Renamed notifier settings from 'Grafana OnCall' to 'Grafana IRM' in mockGrafanaNotifiers.
- Updated test cases in GrafanaReceiverForm to handle SNS contact points, including secure field management.
- Improved test assertions and added new tests for SNS integration to ensure correct behavior and state management.
- Refactored related components for better clarity and maintainability.
* Add secret fiels removal tests
* Fix mocks, remove Combobox changes
* Update snapshots
* Remove obsolete snapshot
* feat: pass read-only props to extension components
This initial commit is used to verify that things are broken in case
the datasource object is not cloned before passed in as a prop.
* chore: update tests
---------
Co-authored-by: Hugo Häggmark <hugo.haggmark@gmail.com>
* Add pills in search bar for context
* Add scope actions
* Add selection functionality
* Show selected scope on secondary row
* Fix selected scope titles
* Add some basic tests
* Test for toggle by name
* Remove unnecessary mocking
* Small cleanups
* Lint fixes
* Fix test
* Update public/app/features/scopes/selector/ScopesSelectorService.ts
Co-authored-by: Tobias Skarhed <1438972+tskarhed@users.noreply.github.com>
* Bump input and breadcrumbs test
* Change breadcrumbs color
* Makes the breacrumb spacing consistent
---------
Co-authored-by: Tobias Skarhed <1438972+tskarhed@users.noreply.github.com>
* ci(levitate): remove backticks and escaping to fix json parsing
* ci(levitate): use code tag over escaping backticks - HTML FTW
* chore(prometheus-package): dummy commit to test levitate changes
* ci(levitate): use actions/github-script@v7 everywhere
* Add format validation for allowed_organizations and allowed_groups
* Refactor, introduce ListFormatValidation
* Add tests
* Update apps/advisor/pkg/app/checks/authchecks/list_format_validation.go
Co-authored-by: Andres Martinez Gotor <andres.martinez@grafana.com>
* Update apps/advisor/pkg/app/checks/authchecks/list_format_validation.go
Co-authored-by: Andres Martinez Gotor <andres.martinez@grafana.com>
* Use one step instead of multiple separate ones
---------
Co-authored-by: Andres Martinez Gotor <andres.martinez@grafana.com>
* Update dependency downshift to v9.0.9
* change conditional typing to error on the onChange property with an easier to read error instead of on the component
add workaround for type script not being able to infer when onChange can accept null
add type test
* better Combobox types!
* remove unused import
* make type changes more backwards compatible
* improve comment
* even better comments
---------
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: samsch <git@samsch.org>
* chore: row index is source index so just use that
* chore: fix better cause why not
---------
Co-authored-by: Adela Almasan <adela.almasan@grafana.com>
Co-authored-by: Sven Grossmann <svennergr@gmail.com>
* replace xorm.io/xorm imports
* replace xorm from other go.mod files
* clean up workspace
* nolint does not make sense anymore as it is not a module
* try if nolint directive helps
* use nolint:all for xorm
* add more nolints
* try to skip xorm in linter config
* exclude xorm differently
* retrigger ci
* Fix TestIntegrationUpdatingProvisionionedDashboards* tests when running on Spanner by fixing case-insensitive search for dashboard title.
* Fix use of case-insensitive LIKE when running on Spanner.
* Fix use of LikeStr in anonstore.
* Fix use of LikeStr in ngalert/store and org/orgimpl.
* Fix use of LikeStr in queryhistory search.
* Fix use of LikeStr in serviceaccounts.
* Fix use of LikeStr in serviceaccounts.
* Fix use of LikeStr in services/team.
* Remove LikeStr method.
* convert to ts
* fix path
* add yarn install step
* revert to commonjs for now
* weird syntax...
* test task creation
* just use workflow step id
* update workflow
* get workflow step id from crowdin
* testing...
* final test
* tidy up
* typescript with type assertion until upstream is fixed
* fix CODEOWNERS
* Fix: do not map when identifying default grafana ds
* add also datasource type
* Refactor code, add unit test
* Fix types references and linting
* Update public/app/features/manage-dashboards/state/actions.test.ts
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Chore: Fix remaining levitate zizmur issues and move to use vault
* Levitate CI: Remove secrets usage for WIF identity provider and SA (#104783)
---------
Co-authored-by: Giuseppe Guerra <giuseppe.guerra@grafana.com>
* introduce alerting notification app
* move code as is and remove from old registry
* update api server registration
* update make file and remove unnecessary args, copy some useful make commands from dashboards
* update codeowners
* move constants inside module and remove dependency from grafana
* add support for selectors to the app builder
* tweak ringKey/ringName for consistency and allow us to configure memberlist cluster label config
* allow setting memberlist cluster label verification disabled field
---------
Co-authored-by: Peter Štibraný <pstibrany@gmail.com>
* Add some clone tests
* Add case to create ref if it doesn't not exist
* Add unit tests for context cancellation
* Bare repository not needed
* Make tests work without git command
Delete epic-add-to-platform-ux-parent-project.yml
This is an old workflow which is no longer used.
Co-authored-by: Mihaela Maior <mihaela.maior@grafana.com>
* Updates the instrumentation_server service to use mux instead of the builtin router, and have it store the router in the module server: this is so we can register the /ring endpoint to check the status of the ring
* Create a new Ring service that depends on the instrumentation server and declares it as a dependency for the storage server
* Create standalone MemberlistKV service for Ring service to use
* Update the storage server Search and GetStats handler to distribute requests if applicable
* adding ml items to main navigation if plugin is installed
* undoing testing change
* updating based on feedback and fixing role to be specific to access to ml plugin
* cleanup unneeded constants
* cleanup diff
* updateing GetOrgID call
* adding greyscale ml logo and using that for consistency
* use currentColor
---------
Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
* New Crowdin translations by GitHub Action
* kick CI
---------
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
* Sanitize paths before evaluating access to route
* use util.CleanRelativePath
---------
Co-authored-by: Andres Martinez Gotor <andres.martinez@grafana.com>
* make sure that user permission cache is cleared after new dashboard and folder creation
* more test fixes
* Update pkg/services/dashboards/service/dashboard_service.go
* check identity type in SetDefaultPermissionsAfterCreate, set default permissions for service accounts
* set SA permissions for folders as well
* fix tests
* feat(add): datasources:query support for using the authlib/authzservice
* added test for datasources
* refactor to create the translation right away
* Update pkg/services/authz/rbac/mapper.go
Co-authored-by: Gabriel MABILLE <gamab@users.noreply.github.com>
* fix tests
---------
Co-authored-by: Gabriel MABILLE <gamab@users.noreply.github.com>
* create the most basic frontend-server module
* expose prom metrics??
* add todo list
* move frontend-service to its own folder in services
* check error from writer.Write
* reword comment, add launch config
* Alerting: Add extended definition to prometheus alert rules api
This adds `isPaused` and `notificationSettings` to the paginated rules api to enable the paginated view of GMA rules.
refactor: make alert rule status and state retrieval extensible
This lets us get status from other sources than the local ruler.
* update swagger spec
* add safety checks in test
* Add unit test for unimplemented methods
* Add unit test for GoGitRepo_Read
* Add tests for Delete
* Add more tests
* Add unit test for GoGitRepo_Push
* Add unit test for ReadTree
* Add test for GitHubRepository_LatestRef
* Add test for GitHubRepository_LatestRef
* Add test for GitHubRepository_CommentPullRequest
* Add remaining tests for GitHubRepository
* Add remaining tests for GitHubRepository
* Fix linting
* Refactor current solution
* Run traceid queries with enabled node graph through backend
* Update test
* Fix lint
* Uodate based on feedback, don't spread
* replace and return the builtin variables
* don't parse the expression twice
* improve the replacement logic
* better code with more tests
* lint
* betterer
* rename the test suite
* Add unit tests IsAuthenticated
* Add unit tests RepoExists
* Add unit tests GetContents
* Add initial unit tests GetTree
* Add unit tests for CreateFile
* Add unit test UpdateFile
* Add unit tests DeleteFile
* Add unit tests for Commits
* Add unit tests for helpers
* Add unit test CompareCommits
* Add GetBranch tests
* Add unit tests BranchExists and CreateBranch
* Add unit tests Webhooks
* Remove unused code
* Add unit tests CommentPullRequest
* Add more cases for GetTree
* Complete coverage
* Fix linting
* remove prometheusUsesCombobox feature toggle
* betterer
* fix the unit test
* create MetricsLabelsSection unit tests
* fix unit tests
* fix unit tests in PromQueryBuilder.test.tsx
* prettier
* remove timeouts
* Revert "remove timeouts"
This reverts commit 84af1fd46b.
* Test validate
* Complete tests for validate
* Add tests for validate
* Add unit tests Read
* Add unit tests ReadTree
* Add unit tests Create
* More specific on apierrors
* Improve coverage
* Add unit tests for Update
* Add unit tests for Write
* Add tests for deletion
* Add test for recursion error
* Add unit tests History
* Add basic scenarios webhook method
* Add cases for push
* Add unit tests for pull request event
* Remove addressed FIXME
* Meta import
* Use sha256
* Fix linting error use of As
* Dashboard: SchemaV2 Fix mapping ds for variables and annotations
* process annotations and vars ds inputs so they can be selected
* clean up so async works
* Add basic unit test for v2 dashboards mapping
* clean up tests
* linting
---------
Co-authored-by: Haris Rozajac <haris.rozajac12@gmail.com>
* Add FiredAt field to the State
* Update featuretoggle files
* Fix lint errors
* Fix test compilation
* Remove random print line + formatting
* Address PR comments
* remove unused part of xorm
* remove onlytodb and onlyfromdb tags
* only keep snapemapper, since we always assumed it is the only one available in xorm
* SQLTemplates: Add helper to ensure all templates have a test-case associated
* UnifiedStorage: Add missing sql template test case
* LegacyDashboards: Add sql templates fs to test cases for exhaustiveness check
* RBACStore: Add sql templates fs to test cases for exhaustiveness check
* LegacyIAM: Add missing sql template test cases
* Add user-facing feature toggle functionality for the new alerting list view
- Implemented `useFeatureToggle` hook to manage feature toggles using local storage.
- Added unit tests for `useFeatureToggle` to verify behavior for various toggle states.
- Updated `RuleList` components to utilize the new feature toggle for alerting list view.
- Introduced `RuleListPageTitle` component to handle toggling between list views with a badge indicator.
* Add tests
* Fix imports and remove unused code
* Add a new feature flag for list v2 preview button
* Hide v2 preview button behind the new feature flag
* Update list v2 feature toggle stage
* Alerting: List view feature toggle button PR review (#104161)
* Add test for undefined feature toggles case
* Tweak tests to use test utils and user
* Add i18n for toggle button and tweak props spreading
* Update translations
---------
Co-authored-by: Tom Ratcliffe <tom.ratcliffe@grafana.com>
* Ensure field validators return the proper type
This ensures correct error propagation through services up to
the API layer.
* Move error wrapping up to call site
* Add recent scopes to command palette
* Remove parent action
* Support updating select set of scopes
* Filter out currently selected scope
* Add recent scopes to drawer
* Add expandable section
* Add recent scopes component
* Only show recommended for leaf nodes
* Small style fixes
* Always write to recent after fetching new scopes
* Add feature toggle check for command palette
* Use i18n
* Remove unused prop
* Add test cases for recent scopes in selector
* Add more test cases
* Add clear test action
* Remove unused imports
* Geomap: Tooltip for multiple features same coord
* Add basic test coverage
* Be explicit with sorting to avoid truthiness error
* Add sorting to tests and clean up
* Check again for duplicates
* WIP: Separate signature package
* Add some unit tests
* Test factory
* Finish unit test coverage signature package
* Fix register
* Add FIXME
* Add more coverage
* Add more coverage
* Fix migrate tests
* Fix unit tests
* convert it to functional component
* useReducer
* usePromQueryFieldEffects
* clean up the code
* remove localStorage provider
* introduce usePromQueryFieldEffects.test.ts
* simpler state management
* remove mocks
* linting + betterer
* Split PrometheusMetricsBrowser into small functional components
* remove /series endpoint usages for Metrics Browser
* add time ranges
* remove unused file
* fix unit test
* use limit
* re-fetch labels when a label value is selected
* reset the label keys when selector is empty
* select multiple labelValue
* fix unit tests
* add comments
* don't show unpresented labelKeys
* don't clear out selected label keys that are in local storage
* show values properly
* fix clearing
* don't discard already selected label values when a new label value selected
* remove unnecessary unit test
* clear all selections
* if metrics list is empty remove all label keys too
* re-populate values when all label selections are removed
* safety
* more comments
* updating the whole fetching mechanism
* buildSafeSelector
* loadSelectedLabelsFromStorage
* fetchMetrics
* fetchLabelKeys
* fetchLabelValues
* more unit test and comment
* timeRange changes will trigger re-fetch
* some more comments
* fix the unit test
* lint
* fix unit tests
* fix timerange causing problem
* remove fethcing message
* proper initialization
* fix value fetching during metric selection
* fix value fetching
* fix unit tests
* fix a bug
* comments
* some precaution
* fix the test
* fetch metrics when metric selection is changed
* trigger initialize when seriesLimit is change
* Revert "trigger initialize when seriesLimit is change"
This reverts commit c6cbbc1386.
* remove redundant comments
* e2e: improves flakiness
* Chore: refactor flaky test
* e2e: more refactor
* e2e: do not keep successfull test run videos
* e2e: do not log selectors
* chore: updates after pr feedback
* chore: updates after pr feedback
* chore: adds retries to flaky e2e test
* e2e: skip flaky tests
* e2e: skip flaky tests
* e2e: revert back to timeout
* chore: removes all the skips
Throw errors when trying to call List in legacy with an RV specified
Change ResourceVersion to microseconds
Co-authored-by: Marco de Abreu <18629099+marcoabreu@users.noreply.github.com>
* Alerting: Update docs for RBAC
This updates the documentation for RBAC to match the changes from 032299011a
* add note about RBAC permissions with datasource permissions
* writers toolkit update
* Rename and make folder migrator public
* Move skipRepo out of tree
* Move folder logic out of worker
* Use wrapper function for clone
* Introduce storage swapper
* Use RepositoryResources interface
* Add TODO
* Signature with option
* Use plural for folders
* Split more logic out of worker
* Refactor further
* Remove todo
* Refactor further
* Test worker
* Add test for unified storage
* Add mock for bulk store
* Clean line
* Test more about storage
* Happy path storage test
* Finish storage tests
* Add more interfaces
* Add some tests legacy
* Complete test coverage legacy
* Complete coverage legacy
* Fix compilation
* Add initial folders tests
* Finish coverage for folders
* Test namespace cleaner
* Fix typo
* Add some tests for resources
* Finish coverage migrate package
* Update tests
* Fix jobs tests
* Unit test users
* Convert user tests to table tests
* Fix linting in tests
* Fix typo
* Use PreloadAllUserInfo
* Add FIXME
* SQL Expressions: Bump GMS for STDDEV(), VARIANCE()
Bump Go MySQL Server to the latest version, to get support for STDDEV()
and VARIANCE() functions, and their aliases.
See https://github.com/dolthub/go-mysql-server/pull/2928
* Update app-code to comply with latest GMS version
* Run `go mod tidy`
* Update test which had depended on STDDEV being missing
* Run `make update-workspace`
Alerting: fix flaky tests
Some test conditions introduced in #103403 are flaky because they rely on random behavior of the generator.
Sometimes rules are generated with an updated by (which warrants the lookup of the users). This makes it so those tests which are checking the user lookup always have rules with updated by.
'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.',
# Due to a race condition, after initial call to `go tool` golang may report a wrong binary location pointing to the invalid `/tmp/go-buildXXX` directory
definecompile_tool
$(shell \
(cd$(src_dir)/$(1) \
&& GOWORK=offgotool -n$(2) > /dev/null \
&& GOWORK=offgotool -n$(2)) | sed 's/^[[:space:]]*//g'; \
tools_dir := $(shell cd $(dir $(lastword $(MAKEFILE_LIST))) && pwd)
src_dir := $(tools_dir)/src
# Due to a race condition, after initial call to `go tool` golang may report a wrong binary location pointing to the invalid `/tmp/go-buildXXX` directory
define compile_tool
$(shell \
(cd $(src_dir)/$(1) \
&& GOWORK=off go tool -n $(2) > /dev/null \
&& GOWORK=off go tool -n $(2)) | sed 's/^[[:space:]]*//g'; \
# This workflow depends on the ./actionlint-format.txt file. It is MIT licensed (thanks, rhysd!): https://github.com/rhysd/actionlint/blob/2ab3a12c7848f6c15faca9a92612ef4261d0e370/testdata/format/sarif_template.txt
# Checks-out your repository, which is validated in the next step
- uses:actions/checkout@v4
@@ -23,7 +27,7 @@ jobs:
# "The comma-separated list of experimental checks that should be executed. By default, all experimental checks are turned off. Possible values: notowned,avoid-shadowing"
experimental_checks:"notowned,avoid-shadowing"
# The repository path in which CODEOWNERS file should be validated."
repository_path:"."
@@ -37,4 +41,4 @@ jobs:
owner_checker_allow_unowned_patterns:"false"
# Specifies whether only teams are allowed as owners of files.
# shellcheck disable=SC2102,SC2016,SC2125 # this is just a string. we _want_ all the bash features to be disabled.
extract_error_message='::error::Extraction failed. Make sure that you have no dynamic translation phrases, such as "t(`preferences.theme.{themeID}`, themeName)" and that no translation key is used twice. Search the output for '[warning]' to find the offending file.'
make i18n-extract || (echo "${extract_error_message}" && false)
- run:|
uncommited_error_message="::error::Translation extraction has not been committed. Please run 'make i18n-extract', commit the changes and push again."
# We need "write" permissions on the PR to be able to add a label.
pull_request_target: # zizmor:ignore[dangerous-triggers] We need this to have labelling permissions. There are no user inputs here, so we should be fine.
types:
- opened
permissions:{}
jobs:
label-if-external:
name:Add 'pr/external' label if the PR is external
- **Profiles:** Stop passing response headers for Grafana-Pyroscope and parca datasources [#106730](https://github.com/grafana/grafana/pull/106730), [@simonswine](https://github.com/simonswine)
### Bug fixes
- **FlameGraph:** Fix bug for function names that conflict with JavaScript object prototype properties [#106625](https://github.com/grafana/grafana/pull/106625), [@simonswine](https://github.com/simonswine)
- **Themes:** Prevent duplicated API call in drawer [#105611](https://github.com/grafana/grafana/pull/105611), [@ashharrison90](https://github.com/ashharrison90)
- **XYChart:** Coerce threshold steps to numbers [#104492](https://github.com/grafana/grafana/pull/104492), [@leeoniya](https://github.com/leeoniya)
- **Security:** Fix CVE-2025-4123
- **Security:** Fix CVE-2025-3580
<!-- 12.0.1 END -->
<!-- 11.6.2 START -->
# 11.6.2 (2025-05-22)
### Features and enhancements
- **Chore:** Bump Go version to 1.24.3 [#105103](https://github.com/grafana/grafana/pull/105103), [@macabu](https://github.com/macabu)
- **Dependencies:** Bump github.com/blevesearch/bleve/v2 from v2.4.4-git to v2.5.0 [#105443](https://github.com/grafana/grafana/pull/105443), [@macabu](https://github.com/macabu)
- **Dependencies:** Bump github.com/openfga/openfga from v1.8.6 to v1.8.12 [#105369](https://github.com/grafana/grafana/pull/105369), [@macabu](https://github.com/macabu)
- **Dependencies:** Unpin and bump github.com/getkin/kin-openapi from v0.126.0 to v0.132.0 [#105251](https://github.com/grafana/grafana/pull/105251), [@macabu](https://github.com/macabu)
### Bug fixes
- **Dashboard:** Fixes issue with row repeats and first row [#104467](https://github.com/grafana/grafana/pull/104467), [@torkelo](https://github.com/torkelo)
- **Graphite:** Ensure template variables are interpolated correctly [#105388](https://github.com/grafana/grafana/pull/105388), [@aangelisc](https://github.com/aangelisc)
- **Graphite:** Fix Graphite series interpolation [#104568](https://github.com/grafana/grafana/pull/104568), [@aangelisc](https://github.com/aangelisc)
- **Chore:** Bump Go version to 1.24.3 [#105109](https://github.com/grafana/grafana/pull/105109), [@macabu](https://github.com/macabu)
- **Dependencies:** Bump github.com/blevesearch/bleve/v2 from v2.4.3 to v2.5.0 [#105441](https://github.com/grafana/grafana/pull/105441), [@macabu](https://github.com/macabu)
- **Dependencies:** Bump github.com/openfga/openfga from v1.8.5 to v1.8.12 [#105373](https://github.com/grafana/grafana/pull/105373), [@macabu](https://github.com/macabu)
- **Dependencies:** Unpin and bump github.com/getkin/kin-openapi from v0.126.0 to v0.132.0 [#105252](https://github.com/grafana/grafana/pull/105252), [@macabu](https://github.com/macabu)
- **Security:** Fix CVE-2025-4123
- **Security:** Fix CVE-2025-3580
<!-- 11.5.5 END -->
<!-- 11.4.5 START -->
# 11.4.5 (2025-05-22)
### Features and enhancements
- **Chore:** Bump Go version to 1.24.3 [#105110](https://github.com/grafana/grafana/pull/105110), [@macabu](https://github.com/macabu)
- **Dependencies:** Bump github.com/blevesearch/bleve/v2 from v2.4.2 to v2.5.0 [#105445](https://github.com/grafana/grafana/pull/105445), [@macabu](https://github.com/macabu)
- **Dependencies:** Bump github.com/openfga/openfga from v1.8.5 to v1.8.12 [#105375](https://github.com/grafana/grafana/pull/105375), [@macabu](https://github.com/macabu)
- **Dependencies:** Unpin and bump github.com/getkin/kin-openapi from v0.125.0 to v0.132.0 [#105253](https://github.com/grafana/grafana/pull/105253), [@macabu](https://github.com/macabu)
- **Security:** Fix CVE-2025-4123
- **Security:** Fix CVE-2025-3580
<!-- 11.4.5 END -->
<!-- 11.3.7 START -->
# 11.3.7 (2025-05-22)
### Features and enhancements
- **Chore:** Bump Go version to 1.24.3 [#105112](https://github.com/grafana/grafana/pull/105112), [@macabu](https://github.com/macabu)
- **Dependencies:** Bump github.com/blevesearch/bleve/v2 from v2.4.2 to v2.5.0 [#105447](https://github.com/grafana/grafana/pull/105447), [@macabu](https://github.com/macabu)
- **Dependencies:** Bump github.com/openfga/openfga from v1.8.5 to v1.8.12 [#105376](https://github.com/grafana/grafana/pull/105376), [@macabu](https://github.com/macabu)
- **Dependencies:** Unpin and bump github.com/getkin/kin-openapi from v0.125.0 to v0.132.0 [#105254](https://github.com/grafana/grafana/pull/105254), [@macabu](https://github.com/macabu)
- **Security:** Fix CVE-2025-4123
- **Security:** Fix CVE-2025-3580
<!-- 11.3.7 END -->
<!-- 11.2.10 START -->
# 11.2.10 (2025-05-22)
### Features and enhancements
- **Chore:** Bump Go version to 1.24.3 [#105113](https://github.com/grafana/grafana/pull/105113), [@macabu](https://github.com/macabu)
- **Dependencies:** Bump github.com/openfga/openfga from v1.8.5 to v1.8.12 [#105378](https://github.com/grafana/grafana/pull/105378), [@macabu](https://github.com/macabu)
- **Dependencies:** Unpin and bump github.com/getkin/kin-openapi from v0.125.0 to v0.132.0 [#105255](https://github.com/grafana/grafana/pull/105255), [@macabu](https://github.com/macabu)
- **Security:** Fix CVE-2025-4123
- **Security:** Fix CVE-2025-3580
<!-- 11.2.10 END -->
<!-- 10.4.19 START -->
# 10.4.19 (2025-05-22)
### Features and enhancements
- **Chore:** Bump Go version to 1.24.3 [#105115](https://github.com/grafana/grafana/pull/105115), [@macabu](https://github.com/macabu)
- **Dependencies:** Bump golang.org/x/net from v0.37.0 to v0.40.0 [#105449](https://github.com/grafana/grafana/pull/105449), [@macabu](https://github.com/macabu)
- **Security:** Fix CVE-2025-4123
- **Security:** Fix CVE-2025-3580
<!-- 10.4.19 END -->
<!-- 12.0.0+security-01 START -->
# 12.0.0+security-01 (2025-05-21)
### Bug fixes
- **Security:** Fix CVE-2025-4123
<!-- 12.0.0+security-01 END -->
<!-- 11.6.1+security-01 START -->
# 11.6.1+security-01 (2025-05-21)
### Bug fixes
- **Security:** Fix CVE-2025-4123
<!-- 11.6.1+security-01 END -->
<!-- 11.5.4+security-01 START -->
# 11.5.4+security-01 (2025-05-21)
### Bug fixes
- **Security:** Fix CVE-2025-4123
<!-- 11.5.4+security-01 END -->
<!-- 11.4.4+security-01 START -->
# 11.4.4+security-01 (2025-05-21)
### Bug fixes
- **Security:** Fix CVE-2025-4123
<!-- 11.4.4+security-01 END -->
<!-- 11.3.6+security-01 START -->
# 11.3.6+security-01 (2025-05-21)
### Bug fixes
- **Security:** Fix CVE-2025-4123
<!-- 11.3.6+security-01 END -->
<!-- 11.2.9+security-01 START -->
# 11.2.9+security-01 (2025-05-21)
### Bug fixes
- **Security:** Fix CVE-2025-4123
<!-- 11.2.9+security-01 END -->
<!-- 10.4.18+security-01 START -->
# 10.4.18+security-01 (2025-05-21)
### Bug fixes
- **Security:** Fix CVE-2025-4123
<!-- 10.4.18+security-01 END -->
<!-- 12.0.0 START -->
# 12.0.0 (2025-05-05)
### Features and enhancements
- **Alerting:** API to convert submitted Prometheus rules to GMA [#102231](https://github.com/grafana/grafana/pull/102231), [@fayzal-g](https://github.com/fayzal-g)
- **Alerting:** Add HMAC signature config to the webhook integration [#100960](https://github.com/grafana/grafana/pull/100960), [@alexander-akhmetov](https://github.com/alexander-akhmetov)
- **Alerting:** Add MissingSeriesEvalsToResolve to the APIs [#102150](https://github.com/grafana/grafana/pull/102150), [@alexander-akhmetov](https://github.com/alexander-akhmetov)
- **Alerting:** Add backend support for keep_firing_for [#100750](https://github.com/grafana/grafana/pull/100750), [@alexander-akhmetov](https://github.com/alexander-akhmetov)
- **Alerting:** Add details and edit pages for groups [#100884](https://github.com/grafana/grafana/pull/100884), [@konrad147](https://github.com/konrad147)
- **Alerting:** Add keep_firing_for and Recovering state [#103248](https://github.com/grafana/grafana/pull/103248), [@soniaAguilarPeiron](https://github.com/soniaAguilarPeiron)
- **Alerting:** Add migration to clean up rule versions table [#102484](https://github.com/grafana/grafana/pull/102484), [@yuri-tceretian](https://github.com/yuri-tceretian)
- **Alerting:** Add missing_series_evals_to_resolve option to alert rule form [#102808](https://github.com/grafana/grafana/pull/102808), [@tomratcliffe](https://github.com/tomratcliffe)
- **Alerting:** Remove constraints for uniqueness of rule title [#102067](https://github.com/grafana/grafana/pull/102067), [@yuri-tceretian](https://github.com/yuri-tceretian)
- **Alerting:** Remove feature flag `alertingNoDataErrorExecution` [#102156](https://github.com/grafana/grafana/pull/102156), [@yuri-tceretian](https://github.com/yuri-tceretian)
- **Alerting:** Sequential evaluation of rules in group [#98829](https://github.com/grafana/grafana/pull/98829), [@yuri-tceretian](https://github.com/yuri-tceretian)
- **Alerting:** Skip rules that are managed by plugins when importing datasource-managed rules [#103573](https://github.com/grafana/grafana/pull/103573), [@soniaAguilarPeiron](https://github.com/soniaAguilarPeiron)
- **Alerting:** Stop allowing manual editing/restore of internal AM config via settings [#103884](https://github.com/grafana/grafana/pull/103884), [@tomratcliffe](https://github.com/tomratcliffe)
- **Alerting:** Update alerting module to 58ba6c617ff05eb1d6f65c59d369a6a16923dff6 [#102812](https://github.com/grafana/grafana/pull/102812), [@yuri-tceretian](https://github.com/yuri-tceretian)
- **Alerting:** Use 'Grafana IRM' wording in alerting contact point [#102014](https://github.com/grafana/grafana/pull/102014), [@brojd](https://github.com/brojd)
- **Authorization:** Add group to role DisplayName to make filtered list more clear [#102950](https://github.com/grafana/grafana/pull/102950), [@forsethc](https://github.com/forsethc)
- **Azure:** Mark Azure Prometheus exemplars as GA and enable by default [#100595](https://github.com/grafana/grafana/pull/100595), [@aangelisc](https://github.com/aangelisc)
- **AzureMonitor:** Improve selection of Basic Logs tables in the query builder [#103820](https://github.com/grafana/grafana/pull/103820), [@aangelisc](https://github.com/aangelisc)
- **BrowseDashboards:** Switch to list view if sort is set [#102196](https://github.com/grafana/grafana/pull/102196), [@Clarity-89](https://github.com/Clarity-89)
- **Checkbox:** Add z-index to description [#103847](https://github.com/grafana/grafana/pull/103847), [@Clarity-89](https://github.com/Clarity-89)
- **Chore:** Promoting feature toggle pluginsSriChecks GA [#102212](https://github.com/grafana/grafana/pull/102212), [@tolzhabayev](https://github.com/tolzhabayev)
- **CloudMigrations:** Add sorting and error filtering to Snapshot Results backend [#102753](https://github.com/grafana/grafana/pull/102753), [@mmandrus](https://github.com/mmandrus)
- **CloudMigrations:** Change onPremToCloudMigrations feature toggle to GA [#103212](https://github.com/grafana/grafana/pull/103212), [@dana-axinte](https://github.com/dana-axinte)
- **CloudMigrations:** Enable high-level resource type selection [#103011](https://github.com/grafana/grafana/pull/103011), [@macabu](https://github.com/macabu)
- **CloudMigrations:** Implement table sorting in the UI [#103061](https://github.com/grafana/grafana/pull/103061), [@mmandrus](https://github.com/mmandrus)
- **CloudWatch:** Migrate to aws-sdk-go-v2 [#103106](https://github.com/grafana/grafana/pull/103106), [@njvrzm](https://github.com/njvrzm)
- **Cloudwatch:** Do not parse log query grouping field to float [#102244](https://github.com/grafana/grafana/pull/102244), [@iwysiu](https://github.com/iwysiu)
- **Cloudwatch:** Migrate to aws-sdk-go-v2 [#99643](https://github.com/grafana/grafana/pull/99643), [@njvrzm](https://github.com/njvrzm)
- **Cloudwatch:** Revert aws sdk go v2 [#103644](https://github.com/grafana/grafana/pull/103644), [@iwysiu](https://github.com/iwysiu)
- **Dashboard Restore:** Remove experimental functionality under feature flag `dashboardRestore` for now - this will be reworked [#103204](https://github.com/grafana/grafana/pull/103204), [@stephaniehingtgen](https://github.com/stephaniehingtgen)
- **Dashboards:** Add a config setting that limits the number of series that will be displayed in a panel. Users can opt in to render all series. [#103405](https://github.com/grafana/grafana/pull/103405), [@oscarkilhed](https://github.com/oscarkilhed)
- **Dashboards:** Prevent saving to a non-existent folder [#103503](https://github.com/grafana/grafana/pull/103503), [@stephaniehingtgen](https://github.com/stephaniehingtgen)
- **Dashboards:** Prevent version restore to same data [#102665](https://github.com/grafana/grafana/pull/102665), [@stephaniehingtgen](https://github.com/stephaniehingtgen)
- **Dependencies:** Bump github.com/redis/go-redis/v9 from 9.7.0 to 9.7.3 [#102555](https://github.com/grafana/grafana/pull/102555), [@dependabot[bot]](https://github.com/dependabot[bot])
- **Docs:** Standard Datetime units limited to millisecond precision [#103610](https://github.com/grafana/grafana/pull/103610), [@axelavargas](https://github.com/axelavargas)
- **ElasticSearch:** Improve index pattern error messaging and docs [#103899](https://github.com/grafana/grafana/pull/103899), [@idastambuk](https://github.com/idastambuk)
- **ElasticSearch:** Make script field input a text area [#103708](https://github.com/grafana/grafana/pull/103708), [@idastambuk](https://github.com/idastambuk)
- **Extensions:** Expose new observable APIs for accessing components and links [#103063](https://github.com/grafana/grafana/pull/103063), [@leventebalogh](https://github.com/leventebalogh)
- **Feat:** Make expressions work with plugins that set `alerting:false` but `backend:true` in their `plugin.json` files [#102232](https://github.com/grafana/grafana/pull/102232), [@tolzhabayev](https://github.com/tolzhabayev)
- **FlameGraphPanel:** Add units to standard options (#89815) [#102720](https://github.com/grafana/grafana/pull/102720), [@snyderdan](https://github.com/snyderdan)
- **Go:** Bump to 1.24.2 [#103521](https://github.com/grafana/grafana/pull/103521), [@Proximyst](https://github.com/Proximyst)
- **Go:** Bump to 1.24.2 (Enterprise)
- **I18n:** Add 13 new languages for translations [#102971](https://github.com/grafana/grafana/pull/102971), [@joshhunt](https://github.com/joshhunt)
- **Influx:** Support PDC for Influx SQL [#103032](https://github.com/grafana/grafana/pull/103032), [@aangelisc](https://github.com/aangelisc)
- **JWT:** Add org role mapping support to the JWT provider [#101584](https://github.com/grafana/grafana/pull/101584), [@QuentinBisson](https://github.com/QuentinBisson)
- **K8s:** Dashboards: Add fine grained access control checks to /apis [#104418](https://github.com/grafana/grafana/pull/104418), [@stephaniehingtgen](https://github.com/stephaniehingtgen)
- **K8s:** Enable kubernetesClientDashboardsFolders by default [#103843](https://github.com/grafana/grafana/pull/103843), [@stephaniehingtgen](https://github.com/stephaniehingtgen)
- **LBAC for data sources:** PublicPreview and self serve enablement [#102276](https://github.com/grafana/grafana/pull/102276), [@eleijonmarck](https://github.com/eleijonmarck)
- **Logs:** Clean up Explore meta information [#103801](https://github.com/grafana/grafana/pull/103801), [@matyax](https://github.com/matyax)
- **Logs:** Prevent automatic scrolling on refresh after changing scroll position [#102463](https://github.com/grafana/grafana/pull/102463), [@matyax](https://github.com/matyax)
- **MetricsDrilldown:** Advance `exploreMetricsUseExternalAppPlugin` to GA [#103653](https://github.com/grafana/grafana/pull/103653), [@NWRichmond](https://github.com/NWRichmond)
- **MetricsDrilldown:** Mark `exploreMetricsUseExternalAppPlugin` as not frontend-only [#102942](https://github.com/grafana/grafana/pull/102942), [@NWRichmond](https://github.com/NWRichmond)
- **MetricsDrilldown:** Restore link to Metrics Drilldown from Explore [#104075](https://github.com/grafana/grafana/pull/104075), [@NWRichmond](https://github.com/NWRichmond)
- **Plugins:** Remove plugin dependency version (Enterprise)
- **Plugins:** Remove sort by options from plugins catalog [#102862](https://github.com/grafana/grafana/pull/102862), [@oshirohugo](https://github.com/oshirohugo)
- **Plugins:** Remove support for secrets manager plugins [#101467](https://github.com/grafana/grafana/pull/101467), [@wbrowne](https://github.com/wbrowne)
- **Plugins:** Remove support for secrets manager plugins (Enterprise)
- **Prometheus:** Add back @lezer/highlight to dev dependency [#102632](https://github.com/grafana/grafana/pull/102632), [@idastambuk](https://github.com/idastambuk)
- **Prometheus:** Add support for cloud partners Prometheus data sources [#103482](https://github.com/grafana/grafana/pull/103482), [@kevinwcyu](https://github.com/kevinwcyu)
- **Prometheus:** Enable Combobox metric select by default [#101045](https://github.com/grafana/grafana/pull/101045), [@joshhunt](https://github.com/joshhunt)
- **Prometheus:** Enable prometheusRunQueriesInParallel feature toggle by default [#102127](https://github.com/grafana/grafana/pull/102127), [@itsmylife](https://github.com/itsmylife)
- **RecordedQueries:** Deprecate recorded queries UI messaging (Enterprise)
- **Alerting:** Fix display of `Normal (Updated)` in alert history [#102476](https://github.com/grafana/grafana/pull/102476), [@tomratcliffe](https://github.com/tomratcliffe)
- **Alerting:** Make nested folders work in Alert List Panel [#103550](https://github.com/grafana/grafana/pull/103550), [@tomratcliffe](https://github.com/tomratcliffe)
- **Alerting:** Remove rule type switch for modified export mode [#102287](https://github.com/grafana/grafana/pull/102287), [@konrad147](https://github.com/konrad147)
- **Alertmanager:** Add Role-Based Access Control via reqAction Field [#101543](https://github.com/grafana/grafana/pull/101543), [@olegpixel](https://github.com/olegpixel)
- **App Platform:** Pin bleve to fix CVE-2022-31022 [#102513](https://github.com/grafana/grafana/pull/102513), [@Proximyst](https://github.com/Proximyst)
- **AppChrome/MegaMenu:** Fixes issue with default state being initialised to undocked [#103507](https://github.com/grafana/grafana/pull/103507), [@torkelo](https://github.com/torkelo)
- **AppTitle:** Fix overflowing text [#103583](https://github.com/grafana/grafana/pull/103583), [@tskarhed](https://github.com/tskarhed)
- **Azure:** Ensure basic logs queries are limited to a single resource [#103588](https://github.com/grafana/grafana/pull/103588), [@aangelisc](https://github.com/aangelisc)
- **CloudWatch:** Import new grafana-aws-sdk with PDC fix [#103249](https://github.com/grafana/grafana/pull/103249), [@njvrzm](https://github.com/njvrzm)
- **ColorPicker:** Fixed height when switching tabs [#103304](https://github.com/grafana/grafana/pull/103304), [@DanMPA](https://github.com/DanMPA)
- **DashboardScenePage:** Correct slug in self referencing data links [#100048](https://github.com/grafana/grafana/pull/100048), [@Sergej-Vlasov](https://github.com/Sergej-Vlasov)
- **Dashboards:** Fix duplicate provisioning when errors occur on title-only based provisioning [#102249](https://github.com/grafana/grafana/pull/102249), [@stephaniehingtgen](https://github.com/stephaniehingtgen)
- **Dashboards:** Fix panel link to Grafana Metrics Drilldown [#103759](https://github.com/grafana/grafana/pull/103759), [@NWRichmond](https://github.com/NWRichmond)
- **Fix:** Change secure_json_data column data type to medium text only MYSQL [#102557](https://github.com/grafana/grafana/pull/102557), [@s4kh](https://github.com/s4kh)
- **GrafanaUI:** Prevent ToolbarButton from submitting form [#102228](https://github.com/grafana/grafana/pull/102228), [@kozhuhds](https://github.com/kozhuhds)
- **GrafanaUI:** Remove blurred background from overlay backdrops to improve performance [#103563](https://github.com/grafana/grafana/pull/103563), [@joshhunt](https://github.com/joshhunt)
- **Navigation:** Fix bookmarks when Grafana is running under subpath [#102679](https://github.com/grafana/grafana/pull/102679), [@matejkubinec](https://github.com/matejkubinec)
- **PanelEdit:** Fixes suggestions not applying options or field config [#102675](https://github.com/grafana/grafana/pull/102675), [@torkelo](https://github.com/torkelo)
- **PluginProxy:** Fix nil pointer in OAuth forwarding [#103626](https://github.com/grafana/grafana/pull/103626), [@moustafab](https://github.com/moustafab)
- **Plugins:** Fix support for adhoc filters with raw queries in InfluxDB [#101966](https://github.com/grafana/grafana/pull/101966), [@beejeebus](https://github.com/beejeebus)
- **Renderer:** Fix regression on callback URL in plugin mode [#103787](https://github.com/grafana/grafana/pull/103787), [@AgnesToulet](https://github.com/AgnesToulet)
- **SQL:** Fix builder crashes when any in selected [#102871](https://github.com/grafana/grafana/pull/102871), [@zoltanbedi](https://github.com/zoltanbedi)
- **SSE:** Fix goroutine leak in math operation expression parsing [#102380](https://github.com/grafana/grafana/pull/102380), [@kylebrandt](https://github.com/kylebrandt)
- **Tempo:** Add fixes for broken exemplars [#103298](https://github.com/grafana/grafana/pull/103298), [@joey-grafana](https://github.com/joey-grafana)
### Breaking changes
- **Alerting:** Make $value return the query value in case when a single datasource is used [#102301](https://github.com/grafana/grafana/pull/102301), [@alexander-akhmetov](https://github.com/alexander-akhmetov)
- **Alerting:** Relax permissions for access a rule [#103664](https://github.com/grafana/grafana/pull/103664), [@moustafab](https://github.com/moustafab)
- **Alerting:** Remove feature toggles relating to Loki Alert State History [#103540](https://github.com/grafana/grafana/pull/103540), [@rwwiv](https://github.com/rwwiv)
- **Alerting:** Remove the POST endpoint for the internal Grafana Alertmanager config [#103819](https://github.com/grafana/grafana/pull/103819), [@rwwiv](https://github.com/rwwiv)
- **Anonymous:** Enforce org role Viewer setting [#102070](https://github.com/grafana/grafana/pull/102070), [@eleijonmarck](https://github.com/eleijonmarck)
- **Chore:** Enable Grafana version check when installing plugins [#103176](https://github.com/grafana/grafana/pull/103176), [@andresmgot](https://github.com/andresmgot)
- **Chore:** Enabling failWrongDSUID by default in Grafana 12 [#102192](https://github.com/grafana/grafana/pull/102192), [@tolzhabayev](https://github.com/tolzhabayev)
- **Plugin Extensions:** Clean up the deprecated APIs [#102102](https://github.com/grafana/grafana/pull/102102), [@leventebalogh](https://github.com/leventebalogh)
- **Plugins:** Remove plugin dependency version [#103728](https://github.com/grafana/grafana/pull/103728), [@wbrowne](https://github.com/wbrowne)
- **Grafana UI:** Clearly separate multiple warnings by using HTML tags [#97979](https://github.com/grafana/grafana/pull/97979), [@zenador](https://github.com/zenador)
- **DashboardScenePage:** Correct slug in self referencing data links [#103854](https://github.com/grafana/grafana/pull/103854), [@Sergej-Vlasov](https://github.com/Sergej-Vlasov)
- **Dependencies:** Bump github.com/redis/go-redis/v9 to 9.7.3 to address CVE-2025-29923 [#102863](https://github.com/grafana/grafana/pull/102863), [@macabu](https://github.com/macabu)
- **Go:** Bump to 1.24.2 [#103523](https://github.com/grafana/grafana/pull/103523), [@Proximyst](https://github.com/Proximyst)
- **Go:** Bump to 1.24.2 (Enterprise)
- **GrafanaUI:** Use safePolygon close handler for interactive tooltips instead of a delay [#102869](https://github.com/grafana/grafana/pull/102869), [@mthorning](https://github.com/mthorning)
- **Prometheus:** Add support for cloud partners Prometheus data sources [#103941](https://github.com/grafana/grafana/pull/103941), [@kevinwcyu](https://github.com/kevinwcyu)
### Bug fixes
- **Alertmanager:** Add Role-Based Access Control via reqAction Field [#103479](https://github.com/grafana/grafana/pull/103479), [@olegpixel](https://github.com/olegpixel)
- **GrafanaUI:** Remove blurred background from overlay backdrops to improve performance [#103647](https://github.com/grafana/grafana/pull/103647), [@joshhunt](https://github.com/joshhunt)
- **Org redirection:** Fix linking between orgs [#102870](https://github.com/grafana/grafana/pull/102870), [@ashharrison90](https://github.com/ashharrison90)
- **Security:** Fix CVE-2025-3454
- **Security:** Fix CVE-2025-2703
- **Security:** Fix CVE-2025-3260
<!-- 11.6.1 END -->
<!-- 11.5.4 START -->
# 11.5.4 (2025-04-23)
### Features and enhancements
- **Azure Monitor:** Filter namespaces by resource group [#103654](https://github.com/grafana/grafana/pull/103654), [@alyssabull](https://github.com/alyssabull)
- **Azure:** Add support for custom namespace and custom metrics variable queries [#103650](https://github.com/grafana/grafana/pull/103650), [@aangelisc](https://github.com/aangelisc)
- **Azure:** Support more complex variable interpolation [#103651](https://github.com/grafana/grafana/pull/103651), [@aangelisc](https://github.com/aangelisc)
- **Azure:** Variable editor and resource picker improvements [#103657](https://github.com/grafana/grafana/pull/103657), [@aangelisc](https://github.com/aangelisc)
- **DashboardScenePage:** Correct slug in self referencing data links [#103853](https://github.com/grafana/grafana/pull/103853), [@Sergej-Vlasov](https://github.com/Sergej-Vlasov)
- **Dependencies:** Bump github.com/redis/go-redis/v9 to 9.6.3 to address CVE-2025-29923 [#102865](https://github.com/grafana/grafana/pull/102865), [@macabu](https://github.com/macabu)
- **Go:** Bump to 1.24.2 [#103525](https://github.com/grafana/grafana/pull/103525), [@Proximyst](https://github.com/Proximyst)
- **Go:** Bump to 1.24.2 (Enterprise)
- **Prometheus:** Add support for cloud partners Prometheus data sources [#103942](https://github.com/grafana/grafana/pull/103942), [@kevinwcyu](https://github.com/kevinwcyu)
- **Chore:** Update libs with CVE in dependencies [#102710](https://github.com/grafana/grafana/pull/102710), [@grambbledook](https://github.com/grambbledook)
- **Go:** Bump to 1.24.2 [#103528](https://github.com/grafana/grafana/pull/103528), [@Proximyst](https://github.com/Proximyst)
- **Go:** Bump to 1.24.2 (Enterprise)
### Bug fixes
- **Auth:** Fix SAML user IsExternallySynced not being set correctly [#103101](https://github.com/grafana/grafana/pull/103101), [@volcanonoodle](https://github.com/volcanonoodle)
- **AuthN:** Refetch user on "ErrUserAlreadyExists" [#102983](https://github.com/grafana/grafana/pull/102983), [@kalleep](https://github.com/kalleep)
- **Security:** Fix CVE-2025-3454
- **Security:** Fix CVE-2025-2703
<!-- 11.3.6 END -->
<!-- 11.2.9 START -->
# 11.2.9 (2025-04-22)
### Features and enhancements
- **Chore:** Update libs with CVE in dependencies [#102712](https://github.com/grafana/grafana/pull/102712), [@grambbledook](https://github.com/grambbledook)
- **Go:** Bump to 1.24.2 [#103529](https://github.com/grafana/grafana/pull/103529), [@Proximyst](https://github.com/Proximyst)
- **Go:** Bump to 1.24.2 (Enterprise)
### Bug fixes
- **Auth:** Fix SAML user IsExternallySynced not being set correctly [#103102](https://github.com/grafana/grafana/pull/103102), [@volcanonoodle](https://github.com/volcanonoodle)
- **AuthN:** Refetch user on "ErrUserAlreadyExists" [#102982](https://github.com/grafana/grafana/pull/102982), [@kalleep](https://github.com/kalleep)
- **Security:** Fix CVE-2025-3454
- **Security:** Fix CVE-2025-2703
<!-- 11.2.9 END -->
<!-- 10.4.18 START -->
# 10.4.18 (2025-04-22)
### Features and enhancements
- **Chore:** Bump golang-jwt/jwt/v4 and golang-jwt/jwt/v5 to address security issues [#102762](https://github.com/grafana/grafana/pull/102762), [@macabu](https://github.com/macabu)
- **Go:** Bump to 1.24.2 [#103531](https://github.com/grafana/grafana/pull/103531), [@Proximyst](https://github.com/Proximyst)
- **Go:** Bump to 1.24.2 (Enterprise)
### Bug fixes
- **Auth:** Fix SAML user IsExternallySynced not being set correctly (#98487) [#103177](https://github.com/grafana/grafana/pull/103177), [@volcanonoodle](https://github.com/volcanonoodle)
- **AuthN:** Refetch user on "ErrUserAlreadyExists" [#102981](https://github.com/grafana/grafana/pull/102981), [@kalleep](https://github.com/kalleep)
- **Security:** Fix CVE-2025-3454
<!-- 10.4.18 END -->
<!-- 11.6.0+security-01 START -->
# 11.6.0+security-01 (2025-04-22)
### Bug fixes
- **Security:** Fix CVE-2025-3454
- **Security:** Fix CVE-2025-2703
- **Security:** Fix CVE-2025-3260
<!-- 11.6.0+security-01 END -->
<!-- 11.5.3+security-01 START -->
# 11.5.3+security-01 (2025-04-22)
### Features and enhancements
- **Chore:** Bump Go to 1.23.7 [#101581](https://github.com/grafana/grafana/pull/101581), [@macabu](https://github.com/macabu)
- **Alerting:** Fix token-based Slack image upload to work with channel names [#101078](https://github.com/grafana/grafana/pull/101078), [@JacobsonMT](https://github.com/JacobsonMT)
- **Dashboard:** Fix the unintentional time range and variables updates on saving [#101671](https://github.com/grafana/grafana/pull/101671), [@harisrozajac](https://github.com/harisrozajac)
- **Dashboards:** Fix missing `v/e/i` keybindings to return back to dashboard [#102365](https://github.com/grafana/grafana/pull/102365), [@mdvictor](https://github.com/mdvictor)
- **InfluxDB:** Improve handling of template variables contained in regular expressions (InfluxQL) [#100977](https://github.com/grafana/grafana/pull/100977), [@aangelisc](https://github.com/aangelisc)
- **Alerting:** Fix token-based Slack image upload to work with channel names [#101072](https://github.com/grafana/grafana/pull/101072), [@JacobsonMT](https://github.com/JacobsonMT)
- **InfluxDB:** Improve handling of template variables contained in regular expressions (InfluxQL) [#100987](https://github.com/grafana/grafana/pull/100987), [@aangelisc](https://github.com/aangelisc)
- **Service Accounts:** Do not show error pop-ups for Service Account and Renderer UI flows [#101790](https://github.com/grafana/grafana/pull/101790), [@IevaVasiljeva](https://github.com/IevaVasiljeva)
- **Security:** Fix CVE-2025-3454
- **Security:** Fix CVE-2025-2703
<!-- 11.4.3+security-01 END -->
<!-- 11.3.5+security-01 START -->
# 11.3.5+security-01 (2025-04-22)
### Features and enhancements
- **Chore:** Bump Go to 1.23.7 [#101583](https://github.com/grafana/grafana/pull/101583), [@macabu](https://github.com/macabu)
- **Chore:** Bump Go to 1.23.7 (Enterprise)
- **Chore:** Update libs with CVE in dependencies [#102710](https://github.com/grafana/grafana/pull/102710), [@grambbledook](https://github.com/grambbledook)
### Bug fixes
- **Alerting:** Fix token-based Slack image upload to work with channel names [#101488](https://github.com/grafana/grafana/pull/101488), [@moustafab](https://github.com/moustafab)
- **Service Accounts:** Do not show error pop-ups for Service Account and Renderer UI flows [#101791](https://github.com/grafana/grafana/pull/101791), [@IevaVasiljeva](https://github.com/IevaVasiljeva)
- **Security:** Fix CVE-2025-3454
- **Security:** Fix CVE-2025-2703
<!-- 11.3.5+security-01 END -->
<!-- 11.2.8+security-01 START -->
# 11.2.8+security-01 (2025-04-22)
### Features and enhancements
- **Chore:** Bump Go version to 1.23.7 [#101294](https://github.com/grafana/grafana/pull/101294), [@macabu](https://github.com/macabu)
- **Chore:** Bump Go version to 1.23.7 (Enterprise)
### Bug fixes
- **Alerting:** Update slack image upload to use new API [#101487](https://github.com/grafana/grafana/pull/101487), [@moustafab](https://github.com/moustafab)
- **Service Accounts:** Do not show error pop-ups for Service Account and Renderer UI flows [#101795](https://github.com/grafana/grafana/pull/101795), [@IevaVasiljeva](https://github.com/IevaVasiljeva)
- **Security:** Fix CVE-2025-3454
- **Security:** Fix CVE-2025-2703
<!-- 11.2.8+security-01 END -->
<!-- 10.4.17+security-01 START -->
# 10.4.17+security-01 (2025-04-22)
### Features and enhancements
- **Chore:** Bump Go version to 1.23.7 [#101565](https://github.com/grafana/grafana/pull/101565), [@macabu](https://github.com/macabu)
- **Chore:** Bump Go version to 1.23.7 (Enterprise)
- **Chore:** Bump golang-jwt/jwt/v4 and golang-jwt/jwt/v5 to address security issues [#102762](https://github.com/grafana/grafana/pull/102762), [@macabu](https://github.com/macabu)
### Bug fixes
- **Alerting:** Update slack image upload to use new API [#101483](https://github.com/grafana/grafana/pull/101483), [@moustafab](https://github.com/moustafab)
- **Service Accounts:** Do not show error pop-ups for Service Account and Renderer UI flows [#101804](https://github.com/grafana/grafana/pull/101804), [@IevaVasiljeva](https://github.com/IevaVasiljeva)
This product is in scope for our Bug Bounty Program. To submit a vulnerability report, please visit [Grafana Labs Bug Bounty Policy page](https://github.com/grafana/bugbounty) and follow the instructions provided. Our security team will review your submission and get back to you as soon as possible.
If you think you have found a security vulnerability, we have two routes for reporting security issues.
Important: Whichever route you choose, we ask you to not disclose the vulnerability before it has been fixed and announced, unless you received a response from the Grafana Labs security team that you can do so.
[Full guidance on reporting a security issue can be found here](https://grafana.com/legal/report-a-security-issue/).
This product is in scope for our Bug Bounty Program. To submit a vulnerability report, please visit [Grafana Labs Bug Bounty page](https://app.intigriti.com/programs/grafanalabs/grafanaossbbp/detail) and follow the instructions provided. Our security team will review your submission and get back to you as soon as possible.
---
For any other security issues, please send an email to security@grafana.com
For products and services outside the scope of our bug bounty program, or if you do not wish to receive a bounty, you can report issues directly to us via email at security@grafana.com. This address can be used for all of Grafana Labs’ open source and commercial products (including but not limited to Grafana, Grafana Cloud, Grafana Enterprise, and grafana.com).
Please encrypt your message to us; please use our PGP key. The key fingerprint is:
This guide explains how to implement new checks in the Grafana Advisor system. The Advisor system allows you to create custom checks that can validate various aspects of your Grafana instance.
## Check Structure
A check in Grafana Advisor consists of two main components:
1. A main check struct that implements the [`checks.Check`](https://github.com/grafana/grafana/blob/269226cb50b970ad9f692f1fdd220e9822e90db8/apps/advisor/pkg/app/checks/ifaces.go#L11-L25) interface
2. One or more step structs that implement the [`checks.Step`](https://github.com/grafana/grafana/blob/269226cb50b970ad9f692f1fdd220e9822e90db8/apps/advisor/pkg/app/checks/ifaces.go#L28-L39) interface
## Implementing a New Check
### 1. Create the Check Package
Create a new package in `pkg/app/checks/` for your check. For example, if you're creating a check for validating configuration fields, you might create `pkg/app/checks/configchecks/`. Add a `check.go` file to the package, there we will implement the check interface. Let's start by implementing the `Check` interface but without any steps yet:
In order to be able to implement a check, it will likely need some dependencies in the form of `wire` services. This is the internal dependency injection system used in Grafana and it allows you to access the services you need.
For our example, we will need access to the grafana settings, which are exposed by wire as `*setting.Cfg` (in this case is a pointer to a struct, not an interface but the idea is the same). So let's add it to our check as a parameter for our `New` function:
```go
typecheckstruct{
cfg*setting.Cfg
}
funcNew(cfg*setting.Cfg)checks.Check{
return&check{
cfg:cfg,
}
}
```
Now, to register our check in the `checkregistry` package, we need to add it to the `ProvideService` function. First, we need to verify that the services we need are available in the `ProvideService` function, and if not, add them. Then, we need to add our check to the `Checks` slice.
```go
funcProvideService(...,cfg*setting.Cfg,
)*Service{
return&Service{
...
cfg:cfg,
}
}
func(s*Service)Checks()[]checks.Check{
return[]checks.Check{
...
configchecks.New(s.cfg),
}
}
```
### 3. Complete the Check Implementation
Now that we have our check registered, we can implement the rest of the check logic.
#### 3.1. Implement the `Items` and `Item` methods
The `Items` method is used to return a list of items that the check will be run on (e.g. all data sources, all plugins, etc). The `Item` method is used to return a single item by its ID.
These functions can return `any` type, we will convert them to the expected type in the step `Run` method.
In our case, we will implement the `Items` method to return a list of config sections that we want to check. The `Item` method will return a single config section by its name.
Check other checks for examples of how to implement these methods in more interesting ways.
#### 3.2. Implement the `Init` method
The `Init` method is used to initialize the check. It is called when the check is first created. It should be used to gather any information that is needed to run the check and for the steps to have some shared context.
In our case, we don't need to do anything special so we can just return `nil`.
```go
func(c*check)Init(ctxcontext.Context)error{
returnnil
}
```
One more interesting example is the `plugincheck`, where we gather all the plugin information from GCOM and store it in the check struct.
### 4. Implement Steps
Like the `Check` interface, each `Step` needs to return some information (metadata) about the step, which will be used to populate the UI, and the logic to `Run` the step.
In our example, we will implement a step that will check if the `security.secret_key` is set correctly. In case it's not correct, we recommend the user to follow the documentation.
Check [`security_config_step.go`](./pkg/app/checks/configchecks/security_config_step.go) for the full implementation.
## Best Practices
1.**Error Handling**: In general, avoid returning errors for known issues, these will mark the check report as failed and the UI will render an error page. Only unexpected errors should be returned.
2.**Type Safety**: Use type assertions to ensure you're working with the correct type of item.
3.**Severity Levels**: Use appropriate severity levels:
-`CheckReportFailureSeverityHigh`: For critical issues that need immediate attention
-`CheckReportFailureSeverityLow`: For non-critical issues that can be addressed later
4.**Resolution Links**: Provide helpful links in the `CheckErrorLink` slice to help users resolve issues.
5.**Logging**: Use the provided logger to log important information and errors.
## Testing
Create tests for your check and its steps to ensure they work as expected. Test both successful and failure scenarios.
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.