* CLI: Adjust 're-encrypt-data-keys' command
* CLI: Adjust 're-encrypt' command
* Multiple improvements on re-encrypt secrets migration
* Another bunch of code improvements
* Lint fixes
(cherry picked from commit e6a85826e9)
Co-authored-by: Joan López de la Franca Beltran <5459617+joanlopez@users.noreply.github.com>
* Add mapped tags input to allow renaming tags in trace to logs settings
* Use mappedTags in createSpanLink
* Update traceToLogs docs
* Show 'add kv' button if no tags
* Update docs
* Default mappedTags to tag values
(cherry picked from commit af2d19b02e)
Co-authored-by: Connor Lindsey <cblindsey3@gmail.com>
* UI: Improve modal a11y by setting role & using title as label
* remove wrapping div for cutom title components
* Fix typo
(cherry picked from commit 9307cc86f2)
Update default port which is used to host alertmanager.
Official port is 9093.
9090 is used officially by Prometheus.
(cherry picked from commit 68ef0e1f84)
Co-authored-by: Michał Sochoń <kaszpir@gmail.com>
* Chore: add setting to skip org assignment for external users
Introduce 'skip_org_role_update_sync' setting to skip any kind of org assignment during the login of external users.
As a consequence manual organization assignments won't be overridden during the upsert of an external user.
Part of #22605
* Chore: Rename skip_org_role_update_sync to oauth_skip_org_role_update_sync and relocate it to auth section
* Chore: replace global setting access where possible
(cherry picked from commit 6beba5a049)
Co-authored-by: baez90 <peter.kurfer@googlemail.com>
cleaned up feature description (there were some leftovers from when the text was last edited)
(cherry picked from commit 34ae28846e)
Co-authored-by: juschm <juschm@users.noreply.github.com>
* set missing meta data for distribution type metrics
* add test
* add test
* simplify custom set
* add test for executedQueryString
* add test data
* fix tests
* check group by
(cherry picked from commit 0fb490c00d)
Co-authored-by: Mitsuhiro Tanda <mitsuhiro.tanda@gmail.com>
* fix(plugins/state): console log errors during install / uninstall
* fix(backend_srv): catch JSON parse errors
Sometimes it can happen that a backend API responses says that it's
returning with a JSON content-type, however it actually returns an invalid
JSON (e.g. an empty body) - in which case the backendSrv() request errors out.
(cherry picked from commit 1e21184f65)
Co-authored-by: Levente Balogh <balogh.levente.hu@gmail.com>
* make send_alerts_to field nullable
* set nullable to true since we have a default value
(cherry picked from commit a9de33601c)
Co-authored-by: Santiago <santiagohernandez.1997@gmail.com>
* Chore: Clean up logs and deprecated library in tracing tests (#45486)
* Fix logs and errors from tracing tests
* Refactor SpanBar to remove recompose
* Fix NodeGraph tests
(cherry picked from commit 6e07b30048)
The problem here is that without the orgID we ignore the lookup of the existing notification channel just before updating and end up failing the update because there is no channel available.
(cherry picked from commit 8bf2e642aa)
Co-authored-by: gotjosh <josue.abreu@gmail.com>
* Loki: Fix using of Explore editor in Explore
* Add test and remove Explore fields in module
* Update tests
(cherry picked from commit e7a0e69153)
Co-authored-by: Ivana Huckova <30407135+ivanahuckova@users.noreply.github.com>
* Explore: avoid locking timepicker when range is inverted
* Explore: prevent time picker to lock if from & to search parameters are present
(cherry picked from commit 6415b9a54d)
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
Changed the swagger ui feature flag to the actual feature flag.
(cherry picked from commit 77a0a71929)
Co-authored-by: Zoltán Bedi <zoltan.bedi@gmail.com>
* Update access_controls.md
Update the parameter table for deleting custom roles to make it explicit that the `global` query parameter is handled by this endpoint/should be specified when deleting a globally-scoped role.
* Update docs/sources/http_api/access_control.md
Co-authored-by: Karl Persson <kalle.persson92@gmail.com>
Co-authored-by: achatterjee-grafana <aparajita.chatterjee@grafana.com>
(cherry picked from commit 1239911b5b)
Co-authored-by: Roberto Acevedo <rxacevedo@users.noreply.github.com>
* show teams page for user who can't list teams but can create teams
* Fixing buttons and routes
* Small refactor
Co-authored-by: gamab <gabi.mabs@gmail.com>
(cherry picked from commit 6fb3aac2e1)
Co-authored-by: Ieva <ieva.vasiljeva@grafana.com>
* AccessControl: Filter team members
* Modify GetTeamMembersByUser comment
* Fix postgres failing test due to quoting
* Rename GetTeamMembersByUser to GetUserTeamMemberships
* Update TeamStore interface
(cherry picked from commit 78fc0258b1)
* Popovers: Improve contrast by darkening shadow and changing border to medium
* Updated sass theme
* Revert back to weak border
(cherry picked from commit 374681b546)
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
Fixes a problem where server hangs if setting
GF_DATABASE_LOG_QUERIES=true.
Ref #44925
(cherry picked from commit ca311bf94f)
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
Fixes log filters that contains comments should not be enabled
(cherry picked from commit 2082eeb72f)
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
* Revert fixed roles and service accounts
* Leave the fixed role for service accounts
(cherry picked from commit f38f10416a)
Co-authored-by: Vardan Torosyan <vardants@gmail.com>
* Security: Sync security changes on main (#45083)
* * Teams: Appropriately apply user id filter in /api/teams/:id and /api/teams/search
* Teams: Ensure that users searching for teams are only able see teams they have access to
* Teams: Require teamGuardian admin privileges to list team members
* Teams: Prevent org viewers from administering teams
* Teams: Add org_id condition to team count query
* Teams: clarify permission requirements in teams api docs
* Teams: expand scenarios for team search tests
* Teams: mock teamGuardian in tests
Co-authored-by: Dan Cech <dcech@grafana.com>
* remove duplicate WHERE statement
* Fix for CVE-2022-21702
(cherry picked from commit 202d7c190082c094bc1dc13f7fe9464746c37f9e)
* Lint and test fixes
(cherry picked from commit 3e6b67d5504abf4a1d7b8d621f04d062c048e981)
* check content type properly
(cherry picked from commit 70b4458892bf2f776302720c10d24c9ff34edd98)
* basic csrf origin check
(cherry picked from commit 3adaa5ff39832364f6390881fb5b42ad47df92e1)
* compare origin to host
(cherry picked from commit 5443892699e8ed42836bb2b9a44744ff3e970f42)
* simplify url parsing
(cherry picked from commit b2ffbc9513fed75468628370a48b929d30af2b1d)
* check csrf for GET requests, only compare origin
(cherry picked from commit 8b81dc12d8f8a1f07852809c5b4d44f0f0b1d709)
* parse content type properly
(cherry picked from commit 16f76f4902e6f2188bea9606c68b551af186bdc0)
* mentioned get in the comment
(cherry picked from commit a7e61811ef8ae558ce721e2e3fed04ce7a5a5345)
* add content-type: application/json to test HTTP requests
* fix pluginproxy test
* Fix linter when comparing errors
Co-authored-by: Kevin Minehart <kmineh0151@gmail.com>
Co-authored-by: Dan Cech <dcech@grafana.com>
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
Co-authored-by: Serge Zaitsev <serge.zaitsev@grafana.com>
Co-authored-by: Vardan Torosyan <vardants@gmail.com>
(cherry picked from commit 605d056136)
* Apply suggestions from code review
* remove uneeded test fix from patch
Co-authored-by: Dimitris Sotirakis <sotirakis.dim@gmail.com>
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
Co-authored-by: jguer <joao.guerreiro@grafana.com>
* logs-volume: remove custom timeout
* make error message a little better
(cherry picked from commit 2c0030b1b4)
Co-authored-by: Gábor Farkas <gabor.farkas@gmail.com>
* Checking in changes from gdoc.
* New more changes.
* Added links to images.
* Added 8-4 link to the What's new index page.
(cherry picked from commit 065819b707)
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
* hide team role column
* hide or disable the role picker as needed
* add SWL filtering for role listing
(cherry picked from commit 4f4b1cb5ea)
Co-authored-by: Ieva <ieva.vasiljeva@grafana.com>
* add negative y config
* Handle negative y and constant transform in Timeseries panel
* Typechecks
* Add migration from old graph panel
* Docs update
* Revert "Add migration from old graph panel"
This reverts commit 33b5a90b66.
* Revert VizLegendItem changes
* Automatically separate positive and negative stacks within a group
* Update packages/grafana-ui/src/components/VizLegend/VizLegend.story.tsx
* Remove SeriesLabel component
* Update docs/sources/visualizations/time-series/_index.md
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
* Update docs/sources/visualizations/time-series/_index.md
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
* Leftover reverts
* Don't crate bands (for now0 for negative -y stack
* Add docs note about transform being only available as an override
* Fill negative bands in reversed direction
Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
(cherry picked from commit ffea53f2f6)
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
* use latest sigv4 changes
* update configuration docs
* lint
* reformat lint ignore
* specific version for docs
(cherry picked from commit fc42dfe396)
Co-authored-by: Will Browne <wbrowne@users.noreply.github.com>
* API: Using go-swagger for extracting OpenAPI specification from source code
* Merge Grafana Alerting spec
* Include enterprise endpoints (if enabled)
* Serve SwaggerUI under feature flag
* Fix building dev docker images
* Configure swaggerUI
* Add missing json tags
Co-authored-by: Ying WANG <ying.wang@grafana.com>
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
(cherry picked from commit 35fe58de37)
* fix(detect-breaking-changes): use the base.ref for backport compatibility
* chore(check-breaking-changes): update path to previous package dist directory
(cherry picked from commit f885c2ede9)
Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>
* Remove UpgradeBox from report nav
* Add children prop
* Update icon
* Update styles
* Update text
* Add pro badge to main nav
* Remove redundant span
* Update secondaryAction
(cherry picked from commit d21abdfe77)
Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
Fixing a couple bugs, adds some tests and hopefully decrease
lock contention when logging.
Switching from using sync.RWMutex to go-kit SwapLogger.
Fixes bug when creating a new logger from an existing one that
screwed up the keyvals and/or lost the logger name.
Ref #44681
(cherry picked from commit 05ea825c76)
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
* Fix evaluation of alert rules for datasources with custom headers
* Fix unit tests
* Fix integration tests
* Evaluator fields should be package private
(cherry picked from commit 9df43abbb5)
Co-authored-by: George Robinson <george.robinson@grafana.com>
* Add tabIndex={-1} to places using focusScope to allow for text highlighting
* use useDialog
* don't need explicit tabIndex anymore
* remove duplicate spreading of props
(cherry picked from commit 9e52361c1e)
Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
Re-adding back Azure authentication support to Prometheus datasource
after the datasource query logic was rewritten from plugin.json routes to
Go backend.
Ref #35857
(cherry picked from commit 85ea1a5d64)
Co-authored-by: Sergey Kostrukov <sekost@microsoft.com>
* AccessControl: Show UserPicker based on canListUser
* Update public/app/core/components/AccessControl/AddPermission.tsx
Co-authored-by: Ieva <ieva.vasiljeva@grafana.com>
(cherry picked from commit 6d931226d8)
Co-authored-by: Gabriel MABILLE <gamab@users.noreply.github.com>
* add actions for team group sync
* extend the hook to allow specifying whether the user is external
* move user struct to type package
* interface for permission service to allow mocking it
* reuse existing permissions
* test fix
* refactor
* linting
(cherry picked from commit 602d62ebcc)
Co-authored-by: Ieva <ieva.vasiljeva@grafana.com>
* loki: refactor: return dataframes instead of timeseries
* fixed unit test
* removed unused import
(cherry picked from commit 0c2ba819a7)
Co-authored-by: Gábor Farkas <gabor.farkas@gmail.com>
* remove link to docs site
* extract tooltip to component
* text and formatting
* use div instead of p
(cherry picked from commit 3314178a0a)
Co-authored-by: Peter Holmberg <peterholmberg@users.noreply.github.com>
* Encryption: Add support for data keys re-encryption
* Add tests for data keys re-encryption
* Update code after refactorings
Co-authored-by: Leonard Gram <leo@xlson.com>
(cherry picked from commit b2655750e8)
Co-authored-by: Joan López de la Franca Beltran <5459617+joanlopez@users.noreply.github.com>
* Encryption: CLI rollback command
* Update flag reference to 'featuremgmt' pkg
* Update feature toggles usage
* Clean up data keys table after envelope encryption rollback
(cherry picked from commit f8105efff3)
Co-authored-by: Joan López de la Franca Beltran <5459617+joanlopez@users.noreply.github.com>
* do not store evaluation string in Evaluation.
* reduce number of buckets to store for a single state
(cherry picked from commit 984c95de63)
Co-authored-by: Yuriy Tseretyan <tceretian@gmail.com>
Moves the request tracing middleware earlier in the chain, just after the tracing middleware
and before the log middleware. With these changes we'll be able to track
authentication/authorization status failures that currently exits early and don't execute the
request tracing middleware. In addition, there might be some other routes now being tracked
with this that we didn't do before.
Fixes#39590
(cherry picked from commit 0092d10764)
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
* Library Elements API GET by name returns array
Making a GET request to the Library Elements HTTP API `api/library-elements/name/:name` will return an **array** of Library Element objects, but the documentation says it will return a Library Element object.
Example cURL POST request:
`curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer XXXXXXXXXXX" -d @request.json "https://my.grafana.net/api/library-elements/"`
request.json
```json
{
"model": {},
"kind": 1,
"name": "testing description3",
"uid": "basic3",
"id": 12345,
"version": 2
}
```
Example cURL GET request:
`curl -X GET -H "Content-Type: application/json" -H "Authorization: Bearer XXXXXXXX" -d @request "https://my/api/library-elements/name/testing description3"`
Example response:
```json
{
"result": [
{
. . .
}
]
}
```
* Library Elements API fix bracket spacing
* Create a "monarch" folder with everything you need to do syntax highlighting and autocompletion.
* Use this new monarch folder with existing cloudwatch sql.
* Add metric math syntax highlighting and autocomplete.
* Make autocomplete "smarter":
- search always inserts a string as first arg
- strings can't contain predefined functions
- operators follow the last closing )
* Add some tests for Metric Math's CompletionItemProvider.
* Fixes After CR:
- refactor CompletionItemProvider, so that it only requires args that are dynamic or outside of it's responsibility
- Update and add tests with mocked monaco
- Add more autocomplete suggestions for SEARCH expression functions
- sort keywords and give different priority from function to make more visually distinctive.
* Change QueryEditor to auto-resize and look more like the one in Prometheus.
* Add autocomplete for time periods for the third arg of Search.
* More CR fixes:
- fix missing break
- add unit tests for statementPosition
- fix broken time period
- sort time periods
* Bug fix
* (WIP) send alerts to external, internal, or both alertmanagers
* Modify admin configuration endpoint, update swagger docs
* Integration test for admin config updated
* Code review changes
* Fix alertmanagers choice not changing bug, add unit test
* Add AlertmanagersChoice as enum in swagger, code review changes
* Fix API and tests errors
* Change enum from int to string, use 'SendAlertsTo' instead of 'AlertmanagerChoice' where necessary
* Fix tests to reflect last changes
* Keep senders running when alerts are handled just internally
* Check if any external AM has been discovered before sending alerts, update tests
* remove duplicate data from logs
* update comment
* represent alertmanagers choice as an int instead of a string
* default alertmanagers choice to all alertmanagers, test cases
* update definitions and generate spec
* first things
* show affected rules when creating silence
* revert typescript bump
* fix yarn lock
* fix import order
* fixing tests
* some layout for affected alerts
* fix test
* add default description
* review part 1
* Add a badge for number of affected alerts
* fix test
* remove blank space
* refactor resource picker
* add tests
* remove not used code
* remove unnecessary check
* fix broken tests
* update table tests now that we no longer expand second level by default
* add missing new line
* pr feedback
* fix broken test
* Added logic to reset metric name when changing namespace in Metric Query
* Added tests for reseting or not metricName onChange namespace
* Added tests for reseting or not metricName onChange namespace
* Removed comment
* Cleaned up tests
* Refactored namespace to be updated in utils
* Removed unecessary overrides for query and onQueryChange
* Renamed tests + used some instead of find
* Display error if no service graph data is returned
* Remove error message and update node graph no data logic
* Check processed nodes instead of rendered nodes for no data message
* Remove console.log
* checks for empty URLs added
* check for TimeSeriesTypeNot to fix InfluxDB alerts
* log a warning when a data frame is ignored
* fix: add brittle Prometheus URL input selector
needs a proper aria-label or test-data-id selector
* test: add URL input aria-label
needs to use the grafana/e2e-selectors package
* test: run ci
* add URL validation for specific data sources, e2e tests
* Update pkg/api/datasource/validation.go
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
* delete duplicated logs
* delete unnecessary leading newline
Co-authored-by: gillesdemey <gilles.de.mey@gmail.com>
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
* Explore: modify tempo trace start time to human readable format in table output
Signed-off-by: tharun <rajendrantharun@live.com>
* add unit tests
Signed-off-by: tharun <rajendrantharun@live.com>
Fixes so that errors (directory not exists, no permission) when scanning plugins are logged as
errors rather than with debug level. In addition, before the scanning would halt in case of
referenced errors, but with these changes the scanning will continue. If any other error
than the referenced error happens the scanning for specific directory would halt and return
the error, e.g. stop Grafana from starting.
Fixes#43012
* Prevent rule deletion when creation in a new folder fails
* Fix handling duplication of rules when moving between folders
* Add unit test for unique name generator
* Fix typo
* I18n: Translate navigation items
* improve comment, remove console.log
* update mock macros
* Mark up all phrases for translation
* added deprecate text comment, moved translations to a seperate file
* use TestProvider in NavBarItem
* use TestProvider in nav tests
* remove text deprecation comment
* update translations
* Create config to enable/disable query history
* Create add to query history functionality
* Add documentation
* Add test
* Refactor
* Add test
* Fix built errors and linting errors
* Refactor
* Remove old tests
* Refactor, adjust based on feedback, add new test
* Update default value
Moves/refactor Grafana specific functionality related to plugin dashboards
out to specific services for importing dashboards and keep app plugin dashboards
up-to-date.
Fixes#44257
* Add filtering by matching label
* Add label and contact based filters to Notification policies
* Improve filters UI, add clear filters option
* Add clearing of filters before switching to adding mode
* Move filtering code to the AmRoutesTable component
* Fix the clearing of silences filter
* Remove key-based input resetting
* Use uniqueId for input key generation
* Add tests for notification policies filtering
* AccessControl: Add access control actions and scopes to team update and delete
* AccessControl: Add tests for AC guards in update/delete
* AccessControl: add fixed role for team writer
* AccessControl: ensure team related AC is deleted with team
* Update pkg/api/team_test.go
* Moved flux case to its own return
* Added missing template replaces for limit, slimit, tz
* Added missing template replaces for select
* Added missing template replaces for group by
* Added tests
* PR changes
* Chore: Remove bus from user api
* Adu authinfoservice interface
* User authinfoservice.Service instead of authinfoservice.Implementation in HTTPServer
* Rename Implementation to authInfoService
* pass notification service down to the notifiers
* add ns to all notifiers
* remove bus from ngalert notifiers
* use smaller interfaces for notificationservice
* attempt to fix the tests
* remove unused struct field
* simplify notification service mock
* trying to resolve issues in the tests
* make linter happy
* make linter even happier
* linter, you are annoying
* AccessControl: cover team permissions
Co-authored-by: ievaVasiljeva <ieva.vasiljeva@grafana.com>
* Add background service as a consumer to resource_services
Co-authored-by: ievaVasiljeva <ieva.vasiljeva@grafana.com>
* Define actions in roles.go
Co-authored-by: ievaVasiljeva <ieva.vasiljeva@grafana.com>
* Remove action from accesscontrol model
Co-authored-by: ievaVasiljeva <ieva.vasiljeva@grafana.com>
* As suggested by kalle
* move some changes from branch to the skeleton PR
* Add background service as a consumer to resource_services
Co-authored-by: ievaVasiljeva <ieva.vasiljeva@grafana.com>
* moving resourceservice to the main wire file pt2
* move team related actions so that they can be reused
* PR feedback
* fix
* typo
* Access Control: adding hooks for team member endpoints (#43991)
* AccessControl: cover team permissions
Co-authored-by: ievaVasiljeva <ieva.vasiljeva@grafana.com>
* Add background service as a consumer to resource_services
Co-authored-by: ievaVasiljeva <ieva.vasiljeva@grafana.com>
* Define actions in roles.go
Co-authored-by: ievaVasiljeva <ieva.vasiljeva@grafana.com>
* Remove action from accesscontrol model
Co-authored-by: ievaVasiljeva <ieva.vasiljeva@grafana.com>
* As suggested by kalle
* add access control to list and add team member endpoint, and hooks for adding team members
* member permission type is 0
* add ID scope for team permission checks
* add more team actions, use Member for member permission name
* protect team member update endpoint with FGAC permissions
* update SQL functions for teams and the corresponding tests
* also protect team member removal endpoint with FGAC permissions and add a hook to permission service
* a few small fixes, provide team permission service to test setup
* AccessControl: cover team permissions
Co-authored-by: ievaVasiljeva <ieva.vasiljeva@grafana.com>
* Add background service as a consumer to resource_services
Co-authored-by: ievaVasiljeva <ieva.vasiljeva@grafana.com>
* Define actions in roles.go
Co-authored-by: ievaVasiljeva <ieva.vasiljeva@grafana.com>
* Remove action from accesscontrol model
Co-authored-by: ievaVasiljeva <ieva.vasiljeva@grafana.com>
* As suggested by kalle
* move some changes from branch to the skeleton PR
* remove resource services from wireexts
* remove unneeded actions
* linting fix
* remove comments
* feedback fixes
* feedback
* simplifying
* remove team member within the same transaction
* fix a mistake with the error
* call the correct sql fction
* linting
* Access control: tests for team member endpoints (#44177)
* tests for team member endpoints
* clean up and fix the tests
* fixing tests take 2
* don't import enterprise test license
* don't import enterprise test license
* remove unused variable
Co-authored-by: gamab <gabi.mabs@gmail.com>
Co-authored-by: Gabriel MABILLE <gamab@users.noreply.github.com>
Co-authored-by: ievaVasiljeva <ieva.vasiljeva@grafana.com>
Fix duplicate validation when multiple organizations have been configured.
This makes sure that all duplicate validation is being made for each organization.
Fixes#44126
* Refactor: Change sqlstore.inTransaction to SQLStore.WithTransactionalDBSession in misc files
* Refactor: Change .inTransaction in org.go file
* Refactor: Update init() to proper SQLStore handlers
* Refactor: Update funcs in tests to be sqlStore methods
* Refactor: Update API funcs to receive HTTPServer
* Fix: define methods on sqlstore
* Adjust GetSignedInUser calls
* Refactor: Add sqlStore to Service struct
* Chore: Add back black spaces to remove file from PR
Co-authored-by: Ida Furjesova <ida.furjesova@grafana.com>
* Add PRO badge
* Allow adding extra content
* Add extra content for the new navbar
* Use highlight text instead of extra content
* Trigger extra events
* Remove ExtraContent
* Update public/app/core/components/NavBar/NavFeatureHighlight.tsx
Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
* Remove redundant i
* Add UpgradeBox
* Move highlight to menu trigger
* Clear navbar next
* Cleanup
* Fix UpgradeBox styles
* Add arrow icon
Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
* chore(storybook): bump to 6.4.13
* revert(yarnrc): put back double quotes
* chore(storybook): fix issues with resolving process
* revert(yarnrc): put back storybook packageExtensions
* refactor(storybook): move process resolution fix to function. update comments
* Check if datasource is read-only when making an update
* Standardize api returning a 404 if datasource is not found while making an update
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>, Jesse Weaver<pianohacker@gmail.com>
Fixes so that searching for folder id zero in folder/dashboard search returns
dashboards located in the general folder and not including all folders as it
did before.
Fixes#40273
* Added tests for wanted behavious in MetricsStatEditor
* Removed wrong import
* Updated MetricStatEditor to add new behaviour
* Updated tests to use react-select-event
* removed unused export
* Adding check for empty string in select value and force null
* clean up
* added check to avoid call to getMetric if there is no metricName selected
* removed todo
* removed empty lines
* Moved external import to top
* Refactored tests to copy props rather than overriding them
* Rename to grafana-server / move scripts into new directory
* Change grafana-server step command
* Change scripts paths
* Use test grabpl version
* Update run-suite script
* Further name updates
* Update grabpl version
* Update contribute/style-guides/e2e-core.md
Co-authored-by: Maria Alexandra <239999+axelavargas@users.noreply.github.com>
Co-authored-by: Maria Alexandra <239999+axelavargas@users.noreply.github.com>
* Separate Tracer interface to TracerService and Tracer
* Fix lint
* Fix:Make it possible to start spans for both opentracing and opentelemetry in ds proxy
* Add span methods, use span interface for rest of tracing
* Fix logs in tracing
* Fix tests that are related to tracing
* Fix resourcepermissions test
* Fix some tests
* Fix more tests
* Add TracingService to wire cli runner
* Remove GlobalTracer from bus
* Renaming test function
* Remove GlobalTracer from TSDB
* Replace GlobalTracer in api
* Adjust tests to the InitializeForTests func
* Remove GlobalTracer from services
* Remove GlobalTracer
* Remove bus.NewTest
* Remove Tracer interface
* Add InitializeForBus
* Simplify tests
* Clean up tests
* Rename TracerService to Tracer
* Update pkg/middleware/request_tracing.go
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
* Initialize tracer before passing it to SQLStore initialization in commands
* Remove tests for opentracing
* Set span attributes correctly, remove unnecessary trace initiliazation form test
* Add tracer instance to newSQLStore
* Fix changes due to rebase
* Add modified tracing middleware test
* Fix opentracing implementation tags
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
* ci(breaking-changes): split into separate builds for pr and main
* ci(breaking-changes): add path for npm install steps
* ci(breaking-changes): fix up workflow, update bash script
* Fix postgres QE a11y label issue
* Add aria-label to query-editor
* Remove unecessary element ID.
* Use aria-labeledby instead of aria-label
* Prefer aria-labelby with dynamic ids
* Prefer "for" over aria-labeledby
* Prefer "for" over aria-labeledby for MSSQL QE
* Refactor: Change sqlstore.inTransaction to SQLStore.WithTransactionalDBSession in alert files
* Fix: Revert second SaveAlerts back to normal func
* Refactor: Update tests so functions are now SQLStore methods
* Fix: Refactor pauseAlert and pauseAllAlerts to be SQLStore methods
* Fix: Refactor SaveAlerts to be SQLStore method
* Refactor: Update SaveAlerts func signature to have correct arguments
* Refactor: Define sqlStore
* Chore: Delete commented out code
* Chore: Remove unused SaveAlertsCommand
* refactor: use server admin listing serviceaccounts
Co-authored-by: Jguer <joao.guerreiro@grafana.com>
* setup route for specifc service account
* add routes to index
* main issue with spelling mistakes
* feat: make routes /serviceacconts/id for navModel
Co-authored-by: Jguer <joao.guerreiro@grafana.com>
Co-authored-by: Alexander Zobnin <alexanderzobnin@gmail.com>
* Update pkg/services/serviceaccounts/manager/service.go
Co-authored-by: Jguer <joao.guerreiro@grafana.com>
Co-authored-by: Alexander Zobnin <alexanderzobnin@gmail.com>
* user essentials mob! 🔱
* user essentials mob! 🔱
* user essentials mob! 🔱
* user essentials mob! 🔱
* user essentials mob! 🔱
* user essentials mob! 🔱
* user essentials mob! 🔱
* add tests
* fix up
Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
Co-authored-by: Alexandra Vargas <alexa1866@gmail.com>
Co-authored-by: Hugo Häggmark <hugo.haggmark@gmail.com>
* Change bucket
(cherry picked from commit f7b85c5dd9)
* Make publish-packages depend on publish-artifacts pipeline
(cherry picked from commit 1c91e84f17)
* Change bucket for windows .msi installers
(cherry picked from commit 5ce49e48df)
* Special case mixed datasources... :/
* Revert "Special case mixed datasources... :/"
This reverts commit dd0e3ea4a8.
* Ensure testdata persists datasource when switching scenario
* Add a unit test to prevent regressions
* kick drone
* AccessControl: POC scope attribute resolution
Refactor based on ScopeMutators
test errors and calls to cache
Add comments to tests
Rename logger
Create keywordMutator only once
* AccessControl: Add AttributeScopeResolver registration
Co-authored-by: gamab <gabriel.mabille@grafana.com>
* AccessControl: Add AttributeScopeResolver to datasources
Co-authored-by: gamab <gabriel.mabille@grafana.com>
* Test evaluation with translation
* fix imports
* AccessControl: Test attribute resolver
* Fix trailing white space
* Make ScopeResolver public for enterprise redefine
* Handle wildcard
Co-authored-by: Jguer <joao.guerreiro@grafana.com>
Co-authored-by: jguer <joao.guerreiro@grafana.com>
* Mark up User profile page for translation
* Extract new messages
* updated selectors
* update selectors
* wip TestProvider
* update tests
* fix field labels
* extract new messages
* don't store date objects in redux state
* don't store date objects in redux state
* Refactor: move fetching from role picker to parent component
* Make built in role props optional
* Initial team role picker
* Add role picker to the teams list
* Optimize fetching roles
* Add pagination for the teams page
* Fix tests
* Hide roles if access control not enabled
* Fix test snapshots
* Refactor: use useAsync() hook
* Refactor: simplify input component
* Move api calls to separate file
* Refactor: use useAsync() hook for user role picker
* Tweak role picker input width
* Fix pagination
* Update test snapshots
* Use loading state from useAsync() hook
* Fix roles label if no roles assigned
* Use integers for time range filter
Previously it was passed as a string which is automatically converted by Elastic to a number only if the field type is "date". For other types (e.g. "long") such conversion doesn't work. In theory "date" could be passed as a formatted string but we don't use it this way and always pass it as a number so it is safe to always pass numbers, not strings.
* Fix time_series_query_test
* Retrigger build
* Name fields based on targets length
* Remove rounding in rate interval variable replacing
* Refactor and fix edge case when interval and time duration would be rate interval
* Add tests
* Remove , from test
* Revert "Name fields based on targets length"
This reverts commit 5dcb34a765.
* Chore: move constants to own file
* Chore: moves safe* functions to grafana/data
* Chore: moves safe* functions to grafana/data
* Chore: adds VariableQueryEditorProps and deprecates VariableQueryProps
* Chore: remove getDefaultVariableAdapters function
* Chore: moves transaction status to types
* Chore: fix tests that do not initialise TemplateSrv
* Chore: change space when stringifying
* Chore: revert safe* func move
* Chore: remove circular dependency in Explore utils
* AccessControl: Provisioning for teams
* Docs: Add fixed role team assignment to full example
Co-authored-by: gamab <gabi.mabs@gmail.com>
Co-authored-by: Jguer <joao.guerreiro@grafana.com>
* Add abstraction layer above SMTP communication
* Fix issues with attachments and sync command
* Tests for bad SMTP behavior
* Separate tests between async and sync entry points. Test difference between them
* Return interface so Wire can properly map types
* Address feedback from George
* add caller and stack Valuer functions
* Add WithPrefix and WithSuffix similar to what go-kit offers
* replace New with just `with`. Remove filter wrapper because the first argument of the context argument is not logger but additional context.
* update Xorm logger to use custom depth to display the datastore code instead of xorm
* Downgrade typescript to 4.5.2 for now
* Downgrade to 4.4.4 instead :(
* kick drone
* Update .github/renovate.json5
Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>
Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>
* Split silence matchers parameter into a separate entry for each label
* Unify the silence link creation
* Remove duplicated matchers when parsing to/from query params
* Add tests for matchers
* Add a comment with a duplication removal explanation
* Improve label duplication comment
* Remove redundant code
* Use uniqBy to simplify the code. Rename matchers parameter
* Fix Silence test data
* Serviceaccounts: feat - tabview for serviceaccounts
* WIP
* feat: listing all service accounts
* refactor: needed to remove showInvitees as not present in serviceaccounts
* add token column in the list
* add token to orgserviceaccount
* Update pkg/services/serviceaccounts/api/api.go
* user essentials mob! 🔱
* user essentials mob! 🔱
* WIP: Mob session work 🚧🔱
* user essentials mob! 🔱
* user essentials mob! 🔱
* user essentials mob! 🔱
* user essentials mob! 🔱
* user essentials mob! 🔱
* mob next [ci-skip] [ci skip] [skip ci]
* user essentials mob! 🔱
* user essentials mob! 🔱
* user essentials mob! 🔱
* user essentials mob! 🔱
* user essentials mob! 🔱
* user essentials mob! 🔱
* :construction:: Mob session work 🔱
* user essentials mob! 🔱
* user essentials mob! 🔱
* Move repeats suite under dashboard suite
* remove these generated files
* move repeats-suite into dashboards-suite
* Reexport dashboard jsons from play and update them
* :construction:: Mob session work 🔱
* :construction:: Mob session work 🔱
* Rename dashboards to work with stripnulls
* Run stripnulls
* Add repeat to row schema
* Clean up the rest of the repeating dashboards
* Fix tooltip sorting
* Update older dashboards
* Update golden files so tests pass
* format this to ensure consistent tabs/spaces
* undo whitespace changes
* Update scripts/stripnulls.sh
Co-authored-by: sam boyer <sam.boyer@grafana.com>
* update schema versions and test
Co-authored-by: thisisobate <obasiuche62@gmail.com>
Co-authored-by: Hugo Häggmark <hugo.haggmark@gmail.com>
Co-authored-by: joshhunt <josh@trtr.co>
Co-authored-by: kay delaney <kay@grafana.com>
Co-authored-by: Alexandra Vargas <alexa1866@gmail.com>
Co-authored-by: sam boyer <sam.boyer@grafana.com>
* Update API to call the scheduler to remove\update an alert rule. When a rule is updated by a user, the scheduler will remove the currently firing alert instances and clean up the state cache.
* Update evaluation loop in the scheduler to support one more channel that is used to communicate updates to it.
* Improved rule deletion from the internal registry.
* Move alert rule version from the internal registry (structure alertRuleInfo) closer rule evaluation loop (to evaluation task structure), which will make the registry values immutable.
* Extract notification code to a separate function to reuse in update flow.
* TimeSeries panel: Add support for sorting series in the tooltip
* Fix cue tests
* Make sortValues work with string values
* Sort values in DatHoverView and remove sort index from TooltipPlugin
* Rename sortOrder prop to sort
* DataHoverView - use raw values for sorting
Typing `t a` in Explore or Dashboards will turn a relative time like "Last 1 hour"
into an absolute range to make the URL permanent, so that when sharing it others
will see the same data.
- registered `t a` in key service
- new `AbsoluteTimeEvent` dispatch via global event bus
- dashboard times handled in TimeSrv
- Explore times handled in Explore.tsx and Explore's time reducer
I could not find an easy way to combine time handling for Exlore and Dashboard in one place.
* Fixed VAr unit casing
* Fixed VAr unit casing
* Fixed VAr unit casing
* Fixed categories.ts file extension
* Fixed VA and kVA capitalization
* Fixed VA, kVA and kVAr capitalization.
* Plugins: Change the PostgreSQL plugin to include more column types in Query Builder metaquery
Originally, the metaquery used in the PostgreSQL plugin to populate the
column dropdown menu in the Query Builder UI only included integer- and real-typed
columns. This change expands the list of acceptable types for plotting to
include numeric columns, boolean columns, and textual columns, as all are
types that could feasibly be desired to plot in a panel.
* Update types tracked in meta query builder
Removed the `boolean` and `text` types, but retained addition of `numeric` type as part of time series query builder.
* Table: Fixes issue with field config applied to wrong fields when hiding columns
* Minor refactoring
* Fixing comment
* Rename to field
* Forgot to save test file
* Update dependency typescript to v4.5.4
* Changes needed to support new TypeScript version
* kick drone
Co-authored-by: Renovate Bot <bot@renovateapp.com>
Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
* fix: add col number to the link to work correctly
If we don't provide the position in a #step:{line}:{column} format
then the Github UI won't take us to the correct step.
* fix: escape the backtick ("`") characters properly
* Fix a11y issues in OpenTSDB configuration page
* Fix a11y issues in OpenTSDB editor
* Link labels to inputs where possible
Co-authored-by: kay delaney <kay@grafana.com>
* wip: add form inputs for creating mute timing
* form for mute timings
* add action for submitting config
* fix bug in payload
* add table for viewing mute timings
* remove mute timing from routes when deleted
* attach mute timing to route
* edit a mute timing
* use field array for multiple intervals
* Add confirmation modal for deleting mute timing
* add default values to form inputs
* fetch am config prior to renderring form
* validation for mute timing fields
* fix tests
* tests for mute timing form
* small ui fixes for the form and table
* pass mute name as query param
* make time fields inline
* fix validation for an existing alert and overwrite on edit
* rename mute timing in routes on edit
* fix validation for time inputs
* make time interval its own component
* add descriptions for mute timings
* refactor time interval parsing functions
* fix linting and tests
* refactor makeAmLink
* docs for mute timings
* reorganize docs and add intro for mute timings
* doc review edits
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
* run prettier
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
* Allow customizable googlechat message via optional setting
* Add optional message field in googlechat contact point configurator
* Fix strange error message on send if template fails to fully evaluate
* Elevate template evaluation failure logs to Warn level
* Extract default.title template embed from all channels to shared constant
* InfoTooltip: refactor component to be accessible
* new: create ghostMode prop to allow turning on/off button styles
* update infoToolTip component to use ghostMode prop
* update story to show ghostMode state
* fix condition to work properly
* nit fix
* revert changes to former infoTooltip state
* InfoTooltip: use iconButton instead to achieve keyboard a11y
* fix minor type nit
* AccessControl: Add user metadata to user detail view
* AccessControl: Do not present delete or disable buttons based on ac metadata in admin/users
* AccessControl: do not allow password changing or user editing without permission
* AccessControl: Fetch global:users scope for admin
* AccessControl: optimize org.user metadata fetch
* Chore: early return if ac metadata is not available
* BarGauge: fix vertical view flip issue
* fix bar misalignment in vertical and horizontal orientations
* add test to prevent bar misalignment in the future
* chore: link to the actual workflow step
* chore: make the "Detect" workflow fail if there were any breaking changes
* chore: stop making the reporting workflow fail on breaking changes
* fix: fix typo (`mesage` -> `message`)
* chore: stop checking out the repo and use the `unzip` command
* refactor: remove deprecated workflow script
* refactor: add whitespace around template variable
* Revert externalization of the tslib so it gets bundled with the plugins.
* Adding pnp-webpack-plugin to properly resolve dependencies in nested plugins.
* added dependency on lodash.
* Create API test for overwriting invalid alertmanager config
* Avoid requiring alertmanager readiness for config changes
* AlertmanagerSrv depends on functionality rather than concrete types
* Add test for non-ready alertmanagers
* Additional cleanup and polish
* Back out previous integration test changes
* Refactor of tests incorrectly caused a test to become redundant
* Use pre-existing fake secret service
* Drop unused interface
* Test against concrete MultiOrgAlertmanager re-using fake infra from other tests
* Fix linter error
* Empty commit to rerun checks
* Feature highlights: add toggle setting
* Settings: Use provider for 'feature_highlights' section
* Fix frontendsettings API tests
* Document the toggle
Co-authored-by: Joan López de la Franca Beltran <5459617+joanlopez@users.noreply.github.com>
Co-authored-by: Joan López de la Franca Beltran <joanjan14@gmail.com>
* Chore: move close popover utility to a standalone file
* remove duplicate function in colorpicker
* fixed incorrect import
* make method slightly flexible by removing type parameter
* AccessControl: Disable user remove and update roles when they do not have the appropriate permissions
* AccessControl: Ensure frontend tests pass in CI
* AccessControl: Add access control metadata to OrgUserDTO
* AccessControl: get User AC metadata
* AccessControl: return User Access Control metadata when requested
* add useToolTipTrigger react aria and state to grafana-ui
* show tooltip on focus and close tooltip when esc key is pressed
* remove react-aria/tooltip package
* fix failing test
* [cr] whitelist flexbox styles in text panel editor
* [cr] separate sanitize function for text panel only
* [cr] separate markdown function for text panel
* [cr] common markdown options
* Update dependency eslint-plugin-react to v7.27.1
* Fix up code to work with new version of eslint-plugin-react
* kick drone
Co-authored-by: Renovate Bot <bot@renovateapp.com>
Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
* Solving two of the code scanning fails
Removes new lines from user input that is logged. Fixes CWE-117 from CodeQL
* remove newlines from request headers
* mask cookie value in header
* comment out logging of headers to solve CWE-117
Instructions added on uncommenting the log statement and on rebuilding the docker container
* Implement left arrow to close menu for now, fix list style on firefox
* Implement onLeft
* Fix outline of first item in navbar
* Fix focus styles appearing when using mouse
* add unit test
* Azure Monitor: Bug fix for template variables.
- Adds back support for custom dropdown field names (such as those that use template variables)
- No longer clears a dropdown if selected value is an unknown option. (Hopefully makes debugging dynamically generated dashboards from json easier to debug).
- Add back support in UI for custom values
Due to PromQL's label matching, both sides of the division will have same series; that means that, whenever there's a 5xx error, both sides will have the same value and the division will be `1`. I believe the idea was to get the ratio of 5xx compared will all status code, and to do that, we need to aggregate the `status_code` dimension away.
* ColorPicker: Refine design of the color picker popover
* One more tweak
* removed unneeded div and add hover style
* Fixing test
* Reverse order from dark to brighter
* influxdb: influxql: query editor: skip fields for metadata
* test added
* removed forgotten line
* updated test name
* updated comment
* simplified test code
* Replace redundant wording
* Add term key
* Reduce wording and move down tooltip
* Reduce margin between tooltip and button
* Correct manual margin to same as button's
* change registry.delete to return deleted struct
* use pointer to alertRuleInfo instead copying.
* do not access evaluation channel when routine is stopped
* remove stopCh and use context cancellation
* do not return ctx.Err when channel is cancelled because it cancels all other routines
* make alertRuleInfo fields and functions package private
* add state filters for prom alerts
* combine state filters
* add datasource filter for panel
* remove duplicate state check
* show only prom, loki, and grafana datasources
* refactor datasource loading
* refactor datasource loading
* pass uid
* use dscache in alerting to get DS
* remove expr/translate pacakge
* remove dup injection entry
* fix DS type on metrics endpoint, remove SQL DS lookup inside SSE
* update test and adapter
* comment fix
* Make eval run as admin when getting datasource info
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
* fmt and comment
* remove unncessary/redundant code
Co-authored-by: Kyle Brandt <kyle@grafana.com>
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
Co-authored-by: Santiago <santiagohernandez.1997@gmail.com>
* pass the correct value to buildScaleKey()
* drop unnecessary type casting
Co-authored-by: Gilles De Mey <gilles.de.mey@gmail.com>
* fix linting errors
Co-authored-by: Gilles De Mey <gilles.de.mey@gmail.com>
Co-authored-by: Eric Leijonmarck <eric.leijonmarck@gmail.com>
Co-authored-by: Emil Tullstedt <emil.tullstedt@grafana.com>
* Change default options for cloned service account
* Run in background
* Add endpoint to upgrade api keys to service accounts
* Configuration: Always display expired API keys
* Use exclamation-triangle instead
* Reintroduce toggle, move logic into store and call both endpoints
* Handle apiKeys without TTL
* Remove backend changes and make checks in frontend instead
* Add 'JSON' field type to ConvertFieldTypeTransformer
I've been playing around with #41994 and found that it requires fields
to contain array values, which can't be sent from a backend plugin. This
PR adds the ability for the ConvertFieldTypeTransformer to parse
JSON values and store the result in the transformed field.
The main use case for this right now is so that a field
containing a JSONified array can be transformed into a field
containing an actual array, which can in
turn be used for the table charts in #41994.
Supersedes #42521.
* Add second option to complex field conversion to increase flexibility
This avoids falsely equating 'JSON' with FieldType.other, and instead
allows multiple parsers to be used if the 'Complex' type is selected.
Currently only JSON parsing is implemented, but others could be
supported easily in future.
* Revert "Add second option to complex field conversion to increase flexibility"
This reverts commit 6314ce35eb.
* Improve test for object parsing of complex field transformer
Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
* Use the api to login in cypress by default
* export getBaseUrl
* Revert "export getBaseUrl"
This reverts commit ae7eecea37.
* just use BASE_URL from the env
* fix exemplars test
* move into separate functions
* SelectOrgPage: migrate API function calls to Redux
* used a much better approach
* writes test for getUserOrganizations action
* writes test for userOrganizationsLoaded reducer
* change userOrg to plural
* chore: add a script for detecting breaking changes
* chore: add a temporary binary for POC3
* chore: add a Github Action workflow for detecting breaking changes
* chore: remove unused variables from the script
* chore: rename the POC3 executable script
* chore: add a label if there is a breaking change
* chore: remove "breaking change" label if all is passing
* chore: rename steps
* fix: only remove the label if there were no breaking changes
* chore: jump to the correct step
* chore: skip `@grafana/toolkit`
* chore: add a message for opening links in a new tab
* chore: update comment message
* chore: use Node 16 for the breaking changes workflow
* chore: install Yarn separately
* chore: use @grafana/levitate
* refactor: remove the unused levitate.js bundle
* fix: handle error when trying to remove a label that does not exist
* chore: delete the comment if there are no breaking changes
* chore: add reviewers automatically
* fix: use double-quote in shell script
* TEMPORARY: introduce a breaking change in `@grafana/data`
* fix: use correct line number for the breaking changes
* Revert "TEMPORARY: introduce a breaking change in `@grafana/data`"
This reverts commit 986ac9ab82.
* chore: remove unnecessary line from .eslintignore
* I18N: Add Core Lingui framework for translating the UI
* Make FieldSet accept ReactNode for the label, so it can be translated
* Translate a phrase in the User profile edit form
* Translate phrase
* run lingui compile before webpack builds
* init i18n more lazily
* i1n:compile in drone lint step
* wip for getting tests to work
* Use mock lingui/macros because its too hard to use the real macros in Jest...
* mock messages for tests
* use specific lingui version
* add comment for test helper
* we actually don't need the i18n setup in tests because we mock out <Trans />
* update package.json
* remove unneded imports
* revert back babel core version
* Create a I18nProvider wrapper
* AccessControl: Provide scope to frontend
* Covering datasources with accesscontrol metadata
* Write benchmark tests for GetResourcesMetadata
* Add accesscontrol util and interface
* Add the hasPermissionInMetadata function in the frontend access control code
* Use IsDisabled rather that performing a feature toggle check
Co-authored-by: Karl Persson <kalle.persson@grafana.com>
* WIP: move user/using api call to redux
* WIP: use redux instead in NewOrgPage component
* moved all the createOrg logic into redux
* type the redux state and action creators automatically
* adds test for setUserOrganization thunk
* update selectOrgPage to use Redux instead
* removes unnecessary dispatch call
* add permission structure to signedinuser
* add middleware to load user permissions into signedinuser struct
* apply LoadPermissionsMiddleware to http server
* check for permissions in signedinuser struct
Co-authored-by: Emil Tullstedt <emil.tullstedt@grafana.com>
* WIP
* wip
* wip
* wip
* refactor: new return of the create service accoutn
* refactor: change to have correct role
* refactor: ability to create service accounts
* make public
* refactor: make ints instead
* refactor: remove location sprintf
* refactor: added back named constants
* Add basic implementation
* Split import/export query interface
* Rename abstract query type
* Rename abstract query type
* Split loki/prom parsing
* Update docs
* Test importing abstract queries to Elastic
* Test exporting abstract queries from Graphite
* Test Prom and Loki query import/export
* Give better control to import/export all queries to data sources
* Fix unit test
* Fix unit test
* Filter out non-existing labels when importing queries to Loki
* Fix relative imports, names and docs
* Fix import type
* Move toPromLike query to Prometheus code
* Dedup label operator mappings
* importAbstractQueries -> importFromAbstractQueries
* Fix unit tests
* Add remove milestone action
* Update name
* Chore: use main branch from github action repository
Co-authored-by: Alexandra Vargas <alexa1866@gmail.com>
* add model for data source
* add model for panels
* add omitempty
* make consistent with main
* dont emit bools
* resolve conflicts
* remove file
* remove file
* update field name
* always pass jsonData
* minify the changes
* remove dupe line
* Infer dropdown menu position when using asynchronously loaded options
* Infer position only when the menu is opened when the component is created
* Add link to react-select bug
* Update docs
* ColorPicker: implement new ui
* makes color swatches tabbable
* implements next and previous arrow key navigation
* make colorPickerPopover to close when esc key is pressed
* colorValueEditor: fix colorPopover closing immediately when clicked
* add blue focus ring to both colorSwatch and picker tabs
* refactor color label divs to be more readable
* more cleanup
* refactor color swatches to use buttons instead
* removes left and right arrow navigation to maintain consistency
* makes colors selectable using the keyboard
* use native button instead for mouse and keyboard click hadling
* when a color is clicked, row backgound should change
* add left padding to last row in colorPopover
* when a color is hovered, row backgound should change
* test for colorPickerPopover component
* small typo fix
* ariaLabel over label
* make row background to not change when a color is selected
* style refactor to be standalone
* use HTMLAttributes instead
* chore(release-notes): add release notes for 8.2.3 and 7.5.12
* chore(release-notes): add release notes to the index
* chore(release-notes): add release notes to index and changelog
* chore(release-notes): add release notes to index and changelog
* chore(latest.json): bump
* chore(pr-actions): remove milestone when pr is closed without being merged
* Update .github/workflows/pr-commands-closed.yml
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
* Added Microsoft.Cdn/profiles to Azure Monitor Plugin
Microsoft.Cdn/profiles is the Azure Front Door Standard/Premium resource which is not present in the supported namespaces. I would like to use this with Grafana.
* Azure Monitor: Added CDN WAF namespace
Added Microsoft.Cdn/cdnwebapplicationfirewallpolicies
Ensured both Microsoft.Cdn/cdnwebapplicationfirewallpolicies and Microsoft.Cdn/profiles are available in all azure clouds
* StateTimeline: Fix toolitp not showing when for frames with multiple fields
* Update public/app/plugins/panel/state-timeline/StateTimelinePanel.tsx
Co-authored-by: Zoltán Bedi <zoltan.bedi@gmail.com>
* Update public/app/plugins/panel/state-timeline/StateTimelinePanel.tsx
Co-authored-by: Zoltán Bedi <zoltan.bedi@gmail.com>
* Update public/app/plugins/panel/state-timeline/StateTimelinePanel.tsx
Co-authored-by: Zoltán Bedi <zoltan.bedi@gmail.com>
Co-authored-by: Zoltán Bedi <zoltan.bedi@gmail.com>
* Chore(dependencies): Tidy up deps in root package
* Tidy up dependencies in @grafana/data
* Tidy up dependencies in @grafana/e2e
* Tidy up @grafana/e2e-selectors packages
* Tidy up packages in @grafana/runtime
* tidy up packages in @grafana/ui
* tidy up packages in jaeger-ui-components
* Readd regenerator-runtime in @grafana/data
* chore(storybook): bump dependencies to 6.4.4
* chore(yarn): update packageExtensions to match latest storybook
* fix(storybook): get webpack builds to pass
* fix(storybook): theme switching works in docs
* fix(storybook): use text logo so accessibility link doesnt break layout
* Variables: adds drag and drop in variables list
* Refactor: fixes after PR comments
* Chore: updates after PR comments
* Refactor: adds styles during dragging
* Docs: update doc
* Chore: pushing Drone
* Navigation: Start creating new NavBarMenu component
* Navigation: Apply new NavBarMenu to NavBarNext
* Navigation: Remove everything to do with .sidemenu-open--xs
* Navigation: Ensure search is passed to NavBarMenu
* Navigation: Standardise NavBarMenuItem
* This extra check isn't needed anymore
* Navigation: Refactor <li> out of NavBarMenu
* Navigation: Combine NavBarMenuItem with DropdownChild
* use spread syntax since performance shouldn't be a concern for such small arrays
* Improve active item logic
* Ensure unique keys
* Remove this duplicate code
* Add unit tests for getActiveItem
* Add tests for NavBarMenu
* Rename mobileMenuOpen -> menuOpen in NavBarNext (since it can be used for mobile menu or megamenu)
* just use index to key the items
* Use exact versions of @react-aria packages
* Navigation: Make the dropdown header a NavBarMenuItem
* Navigation: Stop using dropdown-menu for styles
* Navigation: Add react-aria relevant packages
* Navigation: Refactor NavBarDropdown to support react aria
* Navigation: apply keyboard navigation to NavBar component
* Navigation: UseHover hook for triggering submenu on navbar
* Navigation: rename testMenu component to NavBarItemButton
* WIP
* some hacks
* Refactor: clean up keybinding events
* Navigation: render subtitle on item menu and disable it
* Navigation: Adds react-aria types (#42113)
* Refactor: refactor out to NavBarItemWithoutMenu
* Refactor: cleaning up stuff
* Refactor: comment out unused code
* Chore: Removes section and uses items only
* Chore: fix NavBarNext
* Chore: adds tests
* Refactor: minimize props api
* Refactor: various refactors
* Refactor: rename enableAllItems
* Refactor: remove unused code
* Refactor: fix clicking on menuitems
* Refactor: use recommended onAction instead
* Navigation: Fix a11y issues on NavBar
* Navigation: Fix a11y navBar Next
* Navigation: Remove unnecessary label prop, use link.text instead
* Apply suggestions from code review
Co-authored-by: kay delaney <45561153+kaydelaney@users.noreply.github.com>
Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
* Apply unit tests suggestions from code review
Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
* Update react-aria/menu package to latest version and apply PR suggestion
Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>
Co-authored-by: kay delaney <45561153+kaydelaney@users.noreply.github.com>
Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
* Update jest monorepo
* Update version of marked so it doesn't throw an error, set testEnvironment
* Fix some unit tests
* Remove all these tests that aren't actually working...
* use spyOn instead of mocking the whole module
* Fix linting
Co-authored-by: Renovate Bot <bot@renovateapp.com>
* Fix flaky tests in several notifiers
- Non-mocked time in sensu go tests
- Close server in Slack tests
- Use a mutex for writing responses in the fake slack server
* Remove mutex at the fake slack server
* Explore: Fix ANSI dim style being unreadable in dark mode
* use GrafanaTheme2 instead of opacity
* tweak code and comment
* fix existing tests and add new test for ANSI dim code
* fix failing test
* Pass timezone to graph in Explore
* Fix timezone issues for table
* Fix type error
* Update public/app/features/explore/TableContainer.test.tsx
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
* Replace UTC with InternalTimeZones
* Update CEST to cest
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
* Replaced "Grafana 8 alerting" with "Grafana alerting". Added support matrix for Grafana alerting.
* Few more changes and added deprecation notice to legacy alerting landing page.
* Added more content from Yuri's PR.
* Ran prettier.
* Added code review changes.
* One more change.
* Fixed linked texts.
* Add interface Tracer, add Opentelemetry
* Fix lint
* Fix failing tests and return error if config not parsed fo opentelemetry
* Update defaults.ini
Add comment with jaeger url
* go mod tidy
* Remove comments that are not needed
* Move OpentracingSpan to tracing.go
* Add opentelemetry to sample.ini
* Assume the remote renderer is old if it returns 404 to the version endpoint
* Retry fetch of remote image renderer version on failure
Co-authored-by: Agnès Toulet <35176601+AgnesToulet@users.noreply.github.com>
Update formatting to make a quote block instead of a bold greater-than symbol
> Added backport label, assuming the content is for 8.3 release.
Thanks @achatterjee-grafana :)
Fixes a panic that would ocurr as we proxy 4xx responses. When this happens and the content type of the response is JSON we try to check if the response has a "message" key. Then, we assume that the key will contain a value of string but we don't take into account that this value can potentially be `null`.
This adds a type assertion check to to this assumption so that we can keep the original JSON body as the response if we're unable to extract an `message`.
* Fix Annotation creation
- Remove validation of panelID, now annotations are created irrespective on whether they're attached to a panel or not.
- Alwasy attach the annotation to an AlertID
* Fix annotation creation
* fix tests
* add focus trapping to colorPickerPopover
* make popover exit using esc key
* fix colorPickerPopover to be tabbable
* fix focus escape in colorPickerPopover
* revert to focus trap fix
* add support for code editor and builder
* refactor cloudwatch migration
* Add tooltip to editor field (#56)
* add tooltip
* add old tooltips
* Bug bash feedback fixes (#58)
* make ASC the default option
* update sql preview whenever sql changes
* don't allow queries without aggregation
* set default value for aggregation
* use new input field
* cleanup
* pr feedback
* prevent unnecessary rerenders
* use frame error instead of main error
* remove not used snapshot
* Use dimension filter in schema picker (#63)
* use dimension key filter in group by and schema labels
* add dimension filter also to code editor
* add tests
* fix build error
* fix strict error
* remove debug code
* fix annotation editor (#64)
* fix annotation editor
* fix broken test
* revert annotation backend change
* PR feedback (#67)
* pr feedback
* removed dimension filter from group by
* add spacing between common fields and rest
* do not generate deep link for metric queries (#70)
* update docs (#69)
Co-authored-by: Erik Sundell <erik.sundell87@gmail.com>
* fix lint problem caused by merge conflict
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
* Change the regex to allow to specified other connection attribute for MSSQL connection like ApplicationIntent property
* Docs update
* docs update
* some tests added
* formatting
* Change the regex to allow to specified other connection attribute for MSSQL connection like ApplicationIntent property
* Docs update
* docs update
* some tests added
* formatting
* docs and formatting
Co-authored-by: Zoltán Bedi <zoltan.bedi@gmail.com>
* Tracing: Update incorrect span fix based on review feedback
* Prometheus: Use this.query for health check
* Revert "Prometheus: Use this.query for health check"
This reverts commit 4c1a6a92a5.
Get rid of using legacydata.RequestHandler in HTTPServer, /api/tsdb/query and pkg/expr
with the goal of deprecating /api/tsdb/query and remove it completely eventually. This is
the first step of cleaning up the HTTP API query endpoint.
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
Co-authored-by: Alexander Emelin <frvzmb@gmail.com>
* Prometheus: Fix precision for queries with < 1s timeRange
* Update pkg/tsdb/prometheus/time_series_query.go
Co-authored-by: Gábor Farkas <gabor.farkas@gmail.com>
Co-authored-by: Gábor Farkas <gabor.farkas@gmail.com>
* Chore: Refactor api handlers to use web.Bind
* fix comments
* fix comment
* trying to fix most of the tests and force routing.Wrap type check
* fix library panels tests
* fix frontend logging tests
* allow passing nil as a response to skip writing
* return nil instead of the response
* rewrite login handler function types
* remove handlerFuncCtx
* make linter happy
* remove old bindings from the libraryelements
* restore comments
* Alerting: Clear alerting rule evaluation errors after intermittent failures
When an alert transitioned in a way that `alerting -> error -> (alerting|nodata)`, the error provided by the `error` state would never be cleared thus the API and UI would show the health as an error.
* Select: Fix input cursor position so that it is at the start for single value selects
* Fixing e2e tests
* Fixes cursor issue
* Fixing e2e tests
* e2e fix
* Select: ensure input always overlays singleValue, update pa11y config
Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
* ReleaseNotes: Updated changelog and release notes for 8.3.0-beta2
* chore: update index file for release notes
* chore: Add link for 8.2.5
Co-authored-by: Zoltán Bedi <zoltan.bedi@gmail.com>
Co-authored-by: Levente Balogh <balogh.levente.hu@gmail.com>
Co-authored-by: Zoltán Bedi <zoltan.bedi@gmail.com>
* PanelDataError: Show actions when current panel cannot visualize data
* Fixed so that suggestions tab is opened from action
* Cleanup
* Fixed tests
* Fix tests
* Fixing tests
* Fixed ts issues
* update AlertingEnabled and UnifiedAlertingSettings.Enabled to be pointers
* add a pseudo migration to fix the AlertingEnabled and UnifiedAlertingSettings.Enabled if the latter is not defined
* update the default configuration file to make default value for both 'enabled' flags be undefined
Misc
* update Migrator to expose DB engine. This is needed for a ualert migration to access the database while the list of migrations is created.
* add more verbose failure when migrations do not match
Co-authored-by: gotjosh <josue@grafana.com>
Co-authored-by: Yuriy Tseretyan <yuriy.tseretyan@grafana.com>
Co-authored-by: gillesdemey <gilles.de.mey@gmail.com>
* e2e: Fix running any suite locally
* Fixed issue with testFiles filter when specifying suite name
* unrelated
* fixed import paths to shared
* Moving dashboards to root
* Limit number of suggestions displayed in Graphite dropdowns
* Use limit API to reduce number of loaded tags for autocomplete
* Make tests more explicit
* Packaging: removes an unused dependency
libfontconfig1 was used by phantomjs but we aren't using phantomjs
anymore
* Packaging: removes further libfontconfig1 references
* Add extra fields to OSS types to support enterprise
* WIP service accounts
* Update public/app/features/api-keys/ApiKeysForm.tsx
Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>
* Create a service account at the same time as the API key
* Use service account credentials when accessing API with APIkey
* Throw better error
* Use Boolean for "create service account button"
* Add GetRole to service, merge RoleDTO and Role structs
This patch merges the identical OSS and Enterprise data structures, which improves the code for two reasons:
1. Makes switching between OSS and Enterprise easier
2. Reduces the chance of incompatibilities developing between the same functions in OSS and Enterprise
* Start work cloning permissions onto service account
* If API key is not linked to a service account, continue login as usual
* Fallback to old auth if no service account linked to key
* Commented
* Add CloneUserToServiceAccount
* Update mock.go
* Put graphical bits behind a feature toggle
* Start adding LinkAPIKeyToServiceAccount
* Update pkg/models/user.go
Co-authored-by: Eric Leijonmarck <eric.leijonmarck@gmail.com>
* Update pkg/api/apikey.go
Co-authored-by: Eric Leijonmarck <eric.leijonmarck@gmail.com>
* Update pkg/api/apikey.go
Co-authored-by: Eric Leijonmarck <eric.leijonmarck@gmail.com>
* Finish LinkAPIKeyToServiceAccount
* Update comment
* Handle api key link error
* Update pkg/services/sqlstore/apikey.go
Co-authored-by: Emil Tullstedt <emil.tullstedt@grafana.com>
* Feature toggle
* Update pkg/services/accesscontrol/accesscontrol.go
Co-authored-by: Ieva <ieva.vasiljeva@grafana.com>
* Not needed (yet)
* Better error messages for OSS accesscontrol
* Set an invalid user id as default
* ServiceAccountId should be string
* Re-arrange field names
* ServiceAccountId is integer
* Update ossaccesscontrol.go
* Linter
* Remove fronend edits
* Remove console log
* Update ApiKeysForm.tsx
* feat: add serviceaccount deletion
* feat: make sure we do not accidently delete serviceaccount
* feat: ServiceAccount Type
* refactor: userDeletions function
* refactor: serviceaccount deletions\
* refactor: error name and removed attribute for userDeletecommand
* refactor:: remove serviceaccount type for now
* WIP
* add mocked function
* Remove unnecessary db query, move to right place
* Update pkg/services/accesscontrol/mock/mock.go
Co-authored-by: Gabriel MABILLE <gamab@users.noreply.github.com>
* Update pkg/services/accesscontrol/mock/mock.go
Co-authored-by: Gabriel MABILLE <gamab@users.noreply.github.com>
* Update pkg/services/accesscontrol/mock/mock.go
Co-authored-by: Gabriel MABILLE <gamab@users.noreply.github.com>
* Better error messages
* Better and correcter error messages
* add mocked function
* refactor: move function call, add error msg
* add IsServiceAccount and fix table
* add service accounts package
* WIP
* WIP
* working serviceaccountsapi registration
* WIP tests
* test
* test working
* test running for service
* moved the error out of the models package
* fixed own review
* linting errors
* Update pkg/services/serviceaccounts/database/database.go
Co-authored-by: Jeremy Price <Jeremy.price@grafana.com>
* tests running for api
* WIP
* WIP
* removed unused secrets background svc
* removed background svc for serviceaccount infavor or wire.go
* serviceaccounts manager tests
* wip
* Filtering service accounts from the user queries in frontend
* clean up
* Update pkg/services/sqlstore/org_test.go
* methods on same type should have same receiver
* _ unused variable and comment
* add additional join for results query
* remove unused code
* remove error fmt
* refactor: change to only have false
* no new variable to the left hand side
* refactor: create serviceaccount cmd
* dialect fix
Co-authored-by: Jeremy Price <jeremy.price@grafana.com>
Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>
Co-authored-by: Emil Tullstedt <emil.tullstedt@grafana.com>
Co-authored-by: Ieva <ieva.vasiljeva@grafana.com>
Co-authored-by: Gabriel MABILLE <gamab@users.noreply.github.com>
* Update sentry-javascript monorepo to v6
* Pass fetch implementation to FetchTransport and stub in unit tests
* kick drone
Co-authored-by: Renovate Bot <bot@renovateapp.com>
Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
* feat(catalog): introduce defaultTab to usePluginDetailsTabs hook
* feat(catalog): use defaultTab as fallback tab for PluginDetails
* chore(catalog): remove hardcoded page query param in list items
* refactor(catalog): prefer let over react ref when setting default tab in PluginDetails
* refactor(catalog): pass pageId to plugin details body rather than duplicate logic
* test(catalog): remove query param from List item test hrefs
* test(catalog): introduce a test for default app config page for installed app plugins
* Update dependency react-select to v5
* Remove @types/react-select and update types accordingly
* Fix all unit tests
* Add @ts-expect-error to individual errors, remove prefix as it doesn't seem to exist?
* Another minor typescript fix
* Apply fixes from torkel's PR
* Fix last typescript error
Co-authored-by: Renovate Bot <bot@renovateapp.com>
Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
Split the nightly Docker scan job into separate pipelines, one for each
image, to easier understand which images fails/includes high/critical
vulnerabilities.
* Elasticsearch: Display custom values in version select
* Update public/app/plugins/datasource/elasticsearch/configuration/ElasticDetails.tsx
Co-authored-by: Gábor Farkas <gabor.farkas@gmail.com>
Co-authored-by: Gábor Farkas <gabor.farkas@gmail.com>
* Initial placeholder docs for candlestick panel
* Initial What's new for 8.3
* Delete candlestick.md
Removing this file as it's part of another branch/pr
* Oops forgot to hit save in VSCODE. Rookie mistake
* Select: Select menus now properly scroll when navigating with the keyboard
* Remove this unnecessary children declaration in the interface
* Guard this with an if statement to avoid the nullish coalescing
* Don't need the optional chaining if we're guarding with an if
* add value to email template
* add value to default template
* update test string
* test: fix ngalert test suite
* test: run CI
Co-authored-by: gillesdemey <gilles.de.mey@gmail.com>
* Update dependency cypress to v9
* Update e2e test to work with Cypress 9
* kick drone
Co-authored-by: Renovate Bot <bot@renovateapp.com>
Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
* Alerting: accept mute_timing_intervals through the api for the embedded alertmanager
* add workaround for mutetimeinterval
* add mute timings to routes
* revert changes
* Update pkg/services/ngalert/api/api_alertmanager.go
* Update pkg/services/ngalert/api/api_alertmanager.go
* Update pkg/services/ngalert/api/api_alertmanager.go
* update prometheus/alertmanager dependency
* add some var docs
* Add context to playlist
* Add AddEventListenerCtx and more context
* Update pkg/services/sqlstore/playlist.go
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
* Update pkg/services/sqlstore/playlist.go
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
* Update pkg/services/sqlstore/playlist.go
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
* Fix lint
* Rename listener help function
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
* Add context for Publish and AddEventListener
* Add test and listenersWithCtx
* Refactor listener logic
* Refactor publish logic for all combination of listeners and publish with and without ctx
* refactor(plugins): use routes specific to the new plugins/admin
* refactor(plugins): remove unused pages (PluginList, PluginItem)
* refactor(plugins): remove PluginPage
* refactor(plugins): remove UpdatePluginModal
* refactor(plugins): move AppConfigWrapper under plugins/admin
* refactor(plugins): move PluginDashboards under plugins/admin
* refactor(plugins): rename the "specs" folder to "tests"
* refactor(plugins): move test files to /tests folder
* refactor(plugins): move AppRootPage into a /components folder
* refactor(plugins): move PluginsErrorsInfo into a /plugins folder
* refactor(plugins): move PluginSettingsCache into a /components folder
* refactor(plugins): move PluginStateInfo into a /plugins folder
* refactor(plugins): move AppRootPage.test.tsx next to the tested component
* refactor(plugins): remove old snapshot tests
* fix(plugins): fix tests
* refactor(plugins/admin): move & rename PluginSettingsCache
* fix(plugins): fix a few rebase issues
* Plugins: remove deprecated code (state handling) (#41739)
* refactor(plugins): use the plugins/admin reducer only
* refactor(plugins): remove tests for the deprecated plugins reducer
* refactor(plugins): remove tests for the deprecated plugins selectors
* refactor(plugins/state): add a short comment note to selectors
* feat(plugins/state): add a selector for selecting errors
* feat(plugins/state): add a hook for getting plugin errors
* refactor(plugins): udpate the PluginsErrorsInfo component to use the new state selectors
* refactor(plugins/state): remove the old (deprecated) selectors
* refactor(plugins/state): use the new actions under /admin
* refactor(plugins/state): remove old (deprecated) reducers and actions
* refactor(plugins): update component definition
* fix(plugins): remove unnecessary {children} prop for PluginsErrorsInfo
* Plugins: show / hide install controls based on the `pluginAdminEnabled` flag (#41749)
* docs(plugins): update documentation for the `plugin_admin_enabled` flag
* refactor(InstallControls): move the main component to a named module
* feat(plugins): use the `pluginAdminEnable` flag to hide / show install controls in the UI
* test(plugins): add tests for enabling/disabling install controls
* AccessControl: FGAC permissions for orgs endpoint on frontend
Protect org update endpoints
add or refactor missing right messages
cover org page
* removing scopes from orgs
* Perform permission control with global org
* Perform the error handling in case of 403
* Simplify frontend code by requiring read access for sure
* Remove roles I added to decrease the number of changes
* Remove the check for server admin to reduce the number of changes
* change error message
* Cleaning todos
* Remove unecessary changes
* Fix tests
* Update test snapshot
* Update pkg/api/roles.go
Co-authored-by: Ursula Kallio <73951760+osg-grafana@users.noreply.github.com>
* Update public/app/features/admin/AdminEditOrgPage.tsx
Co-authored-by: Ursula Kallio <73951760+osg-grafana@users.noreply.github.com>
* Format AdminEditOrgPage for linting
* Update public/app/features/admin/AdminEditOrgPage.tsx
Co-authored-by: Vardan Torosyan <vardants@gmail.com>
* Update public/app/features/admin/AdminEditOrgPage.tsx
Co-authored-by: Alexander Zobnin <alexanderzobnin@gmail.com>
* Update public/app/features/admin/AdminListOrgsPage.tsx
Co-authored-by: Alexander Zobnin <alexanderzobnin@gmail.com>
* Commit suggestions
* Commit suggestion canRead canWrite
* fix typo
Co-authored-by: Ursula Kallio <73951760+osg-grafana@users.noreply.github.com>
Co-authored-by: Vardan Torosyan <vardants@gmail.com>
Co-authored-by: Alexander Zobnin <alexanderzobnin@gmail.com>
* refactor(plugins): add empty line between methods
* feat(api): add an API function for updating plugin settings
* feat(plugins): add a "getting started" guide for enabling / disabling app plugins
* test(plugins/admin): add tests for enable/disable functionality
* refactor(plugins/admin): update the name of the test cases
Now that we have multiple type of post-installation steps it probably makes sense.
* Dashboard: Update check for current panel
* Get datasource name as before
* Update public/app/plugins/datasource/dashboard/DashboardQueryEditor.tsx
Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>
* import SHARED_DASHBOARD_QUERY
* Add some unit tests
Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>
* Working version of migrate secrets CLI command
* Move user oauth info encryption away from db transaction
* Enable a mechanism for re-use db session on encryption
* De-duplicate shared code between db and runner commands
* Set up Wire build graph
* Remove enterprise Wire set
* Fix cylic dependency: sqlstore.DBSession <-> xorm.Session
* Minor fix (add missing base64 encoding)
* Extract CLI 'secrets-migration' commands from 'data-migration' ones
* Move runner package outside commands
* Update Makefile (gen-go path)
* Minor prettier fix
* Some minor XORM related refactors
* Include new Wire enterprise file into .gitignore
* Update Wire deps
Co-authored-by: Agnès Toulet <35176601+AgnesToulet@users.noreply.github.com>
Co-authored-by: Tania B <yalyna.ts@gmail.com>
Co-authored-by: Agnès Toulet <35176601+AgnesToulet@users.noreply.github.com>
* Set up Wire build graph
* Remove enterprise Wire set
* Move runner package outside commands
* Update Makefile (gen-go path)
* Minor prettier fix
* Include new Wire enterprise file into .gitignore
* Update Wire deps
* Update the grabpl version
Co-authored-by: Dan Cech <dcech@grafana.com>
* use fixed_interval in date_histogram
* Add 8.0 to available versions in datasource settings
* Remove moving_avg from available metric aggregations
* Add ES8 devenv
* Update public/app/plugins/datasource/elasticsearch/components/QueryEditor/MetricAggregationsEditor/utils.ts
Co-authored-by: Piotr Jamróz <pm.jamroz@gmail.com>
* Add FE tests
* Add BE test
* fix FE test
* fix BE test
Co-authored-by: Piotr Jamróz <pm.jamroz@gmail.com>
* Very simple role picker
* Style radio button
* Separate component for the built-in roles selector
* Custom component instead of Select
* refactor
* Custom input for role picker
* Refactor
* Able to select built-in role
* Add checkboxes for role selector
* Filter out fixed and internal roles
* Add action buttons
* Implement role search
* Fix selecting roles
* Pass custom roles to update
* User role picker
* Some UX work on role picker
* Clear search query on close
* Blur input when closed
* Add roles counter
* Refactor
* Add disabled state for picker
* Adjust disabled styles
* Replace ChangeOrgButton with role picker on admin/users page
* Remove unused code
* Apply suggestions from code review
Suggestions from the @Clarity-89
Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
* Refactor: fix some errors after applying review suggestions
* Show fixed roles in the picker
* Show applied fixed roles
* Fix role counter
* Fix checkbox selection
* Use specific Role type for menu options
* Fix menu when roles list is empty
* Fix radio button name
* Make fixed roles from built-in role disabled
* Make whole menu scrollable
* Add BuiltInRole type
* Simplify appliedRoles
* Simplify options and props
* Do not select and disable inherited fixed roles
* Enable selecting fixed role
* Add description tooltip
* Fix role param name
* Export common input styles from grafana/ui
* Add ValueContainer
* Use value container
* Refactor appliedRoles logic
* Optimise role rendering
* Display selected roles
* Fix tooltip position
* Use OrgRole type
* Optimise role rendering
* Use radio button from grafana UI
* Submenu WIP
* Role picker submenu WIP
* Hide role description
* Tweak styles
* Implement submenu selection
* Disable role selection if it's inherited
* Show new role picker only in Enterprise
* Fix types
* Use orgid when fetching/updating roles
* Use orgId in all access control requests
* Styles for partially checked checkbox
* Tweak group option styles
* Role picker menu: refactor
* Reorganize roles in menu
* Fix input behaviour
* Hide groups on search
* Remove unused components
* Refactor
* Fix group selection
* Remove icons from role tags
* Add spacing for menu sections
* Rename clear all to clear in submenu
* Tweak menu width
* Show changes in the input when selecting roles
* Exclude inherited roles from selection
* Increase menu height
* Change built-in role in input on select
* Include inherited roles to the built-in role selection
* refcator import
* Refactor role picker to be able to pass roles and builtin roles getters
* Add role picker to the org users page
* Show inherited builtin roles in the popup
* Filter out managed roles
* Fix displaying initial builtin roles
* Show tooltip only for non-builtin roles
* Set min width for focused input
* Do not disable inherited roles (by design)
* Only show picker if access control enabled
* Fix tests
* Only close menu on click outside or on indicator click
* Open submenu on hover
* Don't search on empty query
* Do not open/close menu on click
* Refactor
* Apply suggestions from code review
Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
* Fix formatting
* Apply suggestions
* Add more space for close menu sign
* Tune tooltip styles
* Move tooltip to the right side of option
* Use info sign instead of question
Co-authored-by: Clarity-89 <homes89@ukr.net>
Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
* Chore: moves alert to test-id
* Chore: moves Dashboard navigation to test-id
* Chore: moves Bar gauge value to data-testid
* Chore move Folder picker select container to data-testid
* Chore: moves Time zone picker select container to data-testid
* Chore: moves Choose starting day of the week to data-testid
* Chore: change tabIndex on search input
* Chore: moves various search related aria-lables to data-testid
* Chore: connects label to select input on alerting page
* Chore: connects TimeZonePicker and WeekStartPicker with labels
* Chore: moves CallToActionButton to data-testid
* Chore: move user home preferences select to data-testid
* Chore: lower all thresholds
Instead of using the frame name as the series name, we now use the name of the series value column if the frame name is not set. Queries to some datasources may end up with an empty frame name, which leads to an empty series name. As the series name is used in the frontend to display which metrics were queried etc. it shouldn't be empty.
* Make build and test steps run in parallel
* Make tests and builds run on different pipelines
* Make test-backend depend on initialize
* Rename
* Create standalone integration tests pipeline (#41730)
* Remove unused variables
* AccessControl: Check permissions in target org
* Remove org scopes and add an authorizeInOrg middleware
* Use query result org id and perform users permission check globally for GetOrgByName
* Remove scope translation for orgs current
* Suggestion from Ieva
* add text to markers
* add textConfig
* remove separate text layer
* update test
* Update public/app/plugins/panel/geomap/style/markers.ts
Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
* Update public/app/plugins/panel/geomap/style/markers.ts
Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
* update textConfig naming
Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
* TimePickerSettings: make label appropriately link to input when clicked
* DashboardSettings: link labels to input
* use loweercase instead for IDs
* fixes failing e2e test
* properly set query type
* set default unit from data when found
* make AlertQueryRunner take into account ds.filterQuery
* fix tests
* feedback after pr
Co-authored-by: Peter Holmberg <peter.hlmbrg@gmail.com>
* Explore: Show ANSI colors when highlighting matched words
* only highlight ANSI text if needsHighlighter is true
Co-authored-by: Gábor Farkas <gabor.farkas@gmail.com>
* fix lint error
Co-authored-by: Gábor Farkas <gabor.farkas@gmail.com>
* API: Fix dashboard quota limit for imports
* fix: refactor TestDashboardQuota to check if dashboard saved
* Refactor: incorporate Sofia suggestions into tests
* refactor: add fields to TestDashboard struct
* write import test
* GraphOld: Mark old graph panel as deprecated so that it can no longer be picked in the UI
* Add migration button
* remove deprecation
* add timeseries to graph query
* update language
* Slight tweak
* Update public/app/plugins/panel/graph/tab_display.html
Co-authored-by: Leon Sorokin <leeoniya@gmail.com>
Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
Co-authored-by: Leon Sorokin <leeoniya@gmail.com>
* Extract grabpl download as separate step
* Change image to alpine
* Change image to curlimage
* Change image to alpine-curl
* Extract lint-drone step
* Add lint-drone to release and main pipelines
* Rename lint_drone to lint_drone_step
* Sign drone
* will hide the version tab for core plugins.
* will not try to fetch the version list if plugin is local.
* added the concept wheter or not a plugin is published or not.
* Update public/app/features/plugins/admin/pages/PluginDetails.test.tsx
Co-authored-by: Levente Balogh <balogh.levente.hu@gmail.com>
* Update public/app/features/plugins/admin/types.ts
Co-authored-by: Levente Balogh <balogh.levente.hu@gmail.com>
* removed unused api functions.
* fix(plugins/admin): fix a tiny linter issue
Co-authored-by: Levente Balogh <balogh.levente.hu@gmail.com>
* refactor(pkg/api/frontendsettings): group plugin catalog settings
* feat(plugins/admin): add a default config value for `pluginCatalogHiddenPlugins`
* chore(grafana/config): add type for `pluginCatalogHiddenPlugins`
* feat(plugins/admin): hide plugins from the catalog based on the grafana config
* fix(plugins/admin): fix a rebase typo
* fix(plugins/admin): remove unnecessary filtering
* 8.2.4: Fine-grained access control enables organization admins to create/modify/delete user roles in other organization
* Revert back calls with ScopeOrgID
Co-authored-by: gamab <gabi.mabs@gmail.com>
* Barchart docs and styling fix
* Fix name of max length
* rename valueRotation -> xTickLabelRotation
also limits slider padding on sliders without marks
* Tracing: Fix upload JSON
* Tracing: Add processes for each span
* Revert "Tracing: Add processes for each span"
This reverts commit 7c0558be83.
* Tracing: Add processes for each span
* Revert "Tracing: Add processes for each span"
This reverts commit 7c0558be83.
* Prometheus: Dont include empty exempalr frame in results
* Prometheus: Never run exemplar queries for alerting
* Remove exemplar field from alerting and set exemplar to false
* Add tests for frontend
* Add test for backend
* Replace encryption.Service by secrets.Service on expr.Service
* Replace encryption.Service by secrets.Service on live pkg
* Rename encryption.Service to encryption.Internal to clarify it must be not used
* fix(catalog): prefer rendering installed version over latest version
* feat(catalog): signify installed version in version history
* feat(catalog): introduce installedVersion and latestVersion
* refactor(catalog): use latestVersion for installation, simplify plugindetails header logic
* refactor(catalog): clean up installedVersion and latestVersion
* feat(catalog): use table-layout so versions list table has consistent column widths
* test(catalog): update failing tests
* removed the need of having a latest version in the plugin catalog type root level.
* fixed flaky test depending on what locale it was being running with.
* added missing test to verify version for a remote plugin.
* fixed version in header.
* preventing the UI from break if no versions are available.
* fixed failing test due to missing mock data.
* added todo as a reminder.
* refactor(catalog): prefer grafana plugin icons over gcom notfound images
* refactor(Plugins/Admin): change constant name
* refactor(Plugins/Admin): add comment to make condition easier to understand
* chore: update go modules
* feat(Backend/Plugins): add "dependencies" field to `PluginListItem`
* feat(Plugins/Admin): show the grafana dependency for the installed version
* refactor(Plugins/Admin): use the local version of links
* refactor(Plugins/Admin): prefer the local version for `.type`
* refactor(Plugins/ADmin): prefer the local `.description` field
* fix(Plugins/Admin): fix tests
* test(plugins/api): update the expected response for the `api/plugins` tests
* chore(Plugins/Admin): add todo comments to check preferation of remote/local values
* feat(backend/api): always send the grafana version as a header when proxying to GCOM
* feat(plugins/admin): use the `isCompatible` flag to get the latest compatible version
* feat(plugins/admin): show the latest compatible version in the versions list
* fix(plugins/admin): show the grafana dependency for the latest compatible version
* fix(plugins/admin): update the version list when installing/uninstalling a plugin
* test(plugins/admin): add some test-cases for the latest-compatible-version
* fix(plugins/admin): show the grafana dependency for the installed version (if installed)
* feat(plugins/backend): add the `dependencies.grafanaDependency` property to the plugin object
* test(plugins/backend): fix tests by adjusting expected response json
Co-authored-by: Marcus Andersson <marcus.andersson@grafana.com>
Co-authored-by: Levente Balogh <balogh.levente.hu@gmail.com>
* Add extra fields to OSS types to support enterprise
* WIP service accounts
* Update public/app/features/api-keys/ApiKeysForm.tsx
Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>
* Create a service account at the same time as the API key
* Use service account credentials when accessing API with APIkey
* Throw better error
* Use Boolean for "create service account button"
* Add GetRole to service, merge RoleDTO and Role structs
This patch merges the identical OSS and Enterprise data structures, which improves the code for two reasons:
1. Makes switching between OSS and Enterprise easier
2. Reduces the chance of incompatibilities developing between the same functions in OSS and Enterprise
* Start work cloning permissions onto service account
* If API key is not linked to a service account, continue login as usual
* Fallback to old auth if no service account linked to key
* Commented
* Add CloneUserToServiceAccount
* Update mock.go
* Put graphical bits behind a feature toggle
* Start adding LinkAPIKeyToServiceAccount
* Update pkg/models/user.go
Co-authored-by: Eric Leijonmarck <eric.leijonmarck@gmail.com>
* Update pkg/api/apikey.go
Co-authored-by: Eric Leijonmarck <eric.leijonmarck@gmail.com>
* Update pkg/api/apikey.go
Co-authored-by: Eric Leijonmarck <eric.leijonmarck@gmail.com>
* Finish LinkAPIKeyToServiceAccount
* Update comment
* Handle api key link error
* Update pkg/services/sqlstore/apikey.go
Co-authored-by: Emil Tullstedt <emil.tullstedt@grafana.com>
* Feature toggle
* Update pkg/services/accesscontrol/accesscontrol.go
Co-authored-by: Ieva <ieva.vasiljeva@grafana.com>
* Not needed (yet)
* Better error messages for OSS accesscontrol
* Set an invalid user id as default
* ServiceAccountId should be string
* Re-arrange field names
* ServiceAccountId is integer
* Update ossaccesscontrol.go
* Linter
* Remove fronend edits
* Remove console log
* Update ApiKeysForm.tsx
* feat: add serviceaccount deletion
* feat: make sure we do not accidently delete serviceaccount
* feat: ServiceAccount Type
* refactor: userDeletions function
* refactor: serviceaccount deletions\
* refactor: error name and removed attribute for userDeletecommand
* refactor:: remove serviceaccount type for now
* WIP
* add mocked function
* Remove unnecessary db query, move to right place
* Update pkg/services/accesscontrol/mock/mock.go
Co-authored-by: Gabriel MABILLE <gamab@users.noreply.github.com>
* Update pkg/services/accesscontrol/mock/mock.go
Co-authored-by: Gabriel MABILLE <gamab@users.noreply.github.com>
* Update pkg/services/accesscontrol/mock/mock.go
Co-authored-by: Gabriel MABILLE <gamab@users.noreply.github.com>
* Better error messages
* Better and correcter error messages
* add mocked function
* refactor: move function call, add error msg
* add IsServiceAccount and fix table
* add service accounts package
* WIP
* WIP
* working serviceaccountsapi registration
* WIP tests
* test
* test working
* test running for service
* moved the error out of the models package
* fixed own review
* linting errors
* Update pkg/services/serviceaccounts/database/database.go
Co-authored-by: Jeremy Price <Jeremy.price@grafana.com>
* tests running for api
* WIP
* WIP
* removed unused secrets background svc
* removed background svc for serviceaccount infavor or wire.go
* serviceaccounts manager tests
* registering as backend service
Co-authored-by: Jeremy Price <jeremy.price@grafana.com>
Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>
Co-authored-by: Emil Tullstedt <emil.tullstedt@grafana.com>
Co-authored-by: Ieva <ieva.vasiljeva@grafana.com>
Co-authored-by: Gabriel MABILLE <gamab@users.noreply.github.com>
* build(webpack): enable caching for development and production builds
* build(webpack): introduce unminified production build script
* build(typescript): introduce incremental flag to cache typechecking
* chore(git): ignore typescript cache file
* chore(webpack): bump dependencies to latest
* Add additional api key, move cloneserviceaccount
* Remove TODOs, for now
* Error messages
* Linter
* Security check
* Add comments
* Take service account id from correct variable
* Update user.go
* Configuration: Fix so Timezone is saved when saving preferences
* Updating package.json and yarn.lock
* Chore: force drone reload
* Chore: trying with the git protocol
* Chore: revert back to main
* Chore: deleted cached pa11y file
* Chore: revert
* Chore: trying with YARN_CHECKSUM_BEHAVIOR=reset
* Chore: YARN_CHECKSUM_BEHAVIOR=reset worked but reverting back waiting for other fix
* if a plugin fails to load, we will not crash grafana.
* preventing the preloaded plugings to crash the whole app on failure.
* updated to unkown.
* fixed issue with angular by moving the preloadPlugin import to the same row as we did import the importPluginModule.
* Update dependency postcss-loader to v6
* Revert "Update dependency postcss-loader to v6"
This reverts commit c3d59a8241.
* Do not upgrade postcss-loader until webpack 5
Co-authored-by: Renovate Bot <bot@renovateapp.com>
Co-authored-by: Zoltán Bedi <zoltan.bedi@gmail.com>
* Fix parsing of float numbers in validation
* Adjust test
* Update packages/grafana-data/src/datetime/durationutil.test.ts
* Update packages/grafana-data/src/datetime/durationutil.test.ts
* Remove us from placeholder
* making it possible to cache plugins based on the version.
* feat(plugincache): introduce function to invalidate entries
* removed todo's
* added tests for the cache buster.
* fixed tests.
* fixed failing tests.
Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>
Refactor usage of legacy data contracts. Moves legacy data contracts
to pkg/tsdb/legacydata package.
Refactor pkg/expr to be a proper service/dependency that can be provided
to wire to remove some unneeded dependencies to SSE in ngalert and other places.
Refactor pkg/expr to not use the legacydata,RequestHandler and use
backend.QueryDataHandler instead.
This commit fixes an issue in alerting where NoDataFound is false
when using the AND operator to compare two conditions in an alert
rule and one of the conditions has no data.
* Rename "Logs volume" labels to "Log volume"
Code references are kept intact as there's a lot of them, it could be renamed in a separate PR just with renaming
* Add log level docs
* Remove feature flag to enable log volume by default
* Update error message
* Update docs
* Fix unit test
* Fix unit test
Queries are now run automatically
* Add extra param for Loki API
* Remove "Load volume" button
* Update documentation about log volume
* Move comment
* Make reload button more accessible
* Update docs/sources/explore/logs-integration.md
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
* Hide full range log volume for Loki behind the feature toggle
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
* Getting close
* Restore angular app boot at startup
* Moving angular annotations dependencies to app/angular or old graph
* Remove redundant setLinkSrv call
* Fixing graph test
* Minor refactor based on review feedback
* Create in get function
* adds better aria-label for run and interval buttons
* enable refreshPicker to be keyboard navigable
* adds support for closing menu using esc key
* Fix: weird behaviour when navigating menu items
* adds focus trapping to refresh picker
* WIP: sanitize time interval values for screen readers to pronounce correctly
* WIP: improve sanitizeLabel function to work for all use cases
* Chore: move label sanitization to refreshPicker component instead
* Chore: add fallback label when ariaLabel prop is not set
* Chore: fix some type errors
* code cleanup
* update tests
* rename function to be more descriptive
* remove unnecessary type casting
* WIP: use cleaner solution
* WIP: use parseDuration util instead
* use more descriptive aria label
* fix: modify parseDuration util to output correct interval unit format
* fix: move interval unit format logic to refreshPicker
* Chore: add back old refreshPicker e2e selectors for backward compatibility
* Fix: improve refresh picker to voice out selected interval option
* Fix: use appropriate aria roles and states to aid screen reader a11y
* Fix: support dropdown expansion using down arrow key
* Chore: use better type construct
* Fix: add support for tab to close menu
* add more context to the deprecation warning message
* Chore: use formatDuration util instead to format interval labels
* Chore: small syntax fix
* chore: syntax fix
* syntax fix
* Chore: add back lockfile
* fix(storybook): make sure story background fills available height
* fix(storybook): add decorator to prevent badge filling all available height
* docs(badge): use centered story
* revert(badge): remove obsolete Meta typing
* Fix: make webpack pickup workers written in TS
* Add comlink to dependencies
* Temporary fix: copy paste `toDataQueryError` from @grafana/runtime to avoid web dependencies
* Implemented comlink-based centrifuge worker & worker proxy
* Temporary fix: implement comlink transferHandlers for subscriptions and streamingdataframes
* Move liveTimer filtering from CentrifugeService into GrafanaLiveService
* Switch from CentrifugeService to CentrifugeServiceWorkerProxy in GrafanaLive
* Naming fix
* Refactor: move liveTimer-based data filtering from GrafanaLiveService to CentrifugeServiceWorker
* observe dataStream on an async scheduler
* Fix: - Unsubscribe is now propagated from the main thread to the worker, - improve worker&workerProxy types
* Fix: Prettify types
* Fix: Add error & complete observers
* Docs: Add comment explaining the `subscriberTransferHandler`
* Fix: Replace `StreamingDataFrameHandler` with explicitly converting StreamingDataFrame to a DataFrameDTO
* Refactor: move liveTimer filtering to service.ts to make it easy to implement a `live-service-web-worker` feature flag
* Feat: add `live-service-web-worker` feature flag
* Fix: extract toDataQueryError.ts to a separate file within `@grafana-runtime` to avoid having a dependency from webworker to the whole package (@grafana-runtime/index.ts)
* Update public/app/features/dashboard/dashgrid/liveTimer.ts
Co-authored-by: Leon Sorokin <leeoniya@gmail.com>
* Fix: fixed default import class in worker file
* Fix: cast worker as Endpoint
* Migrate from worker-loader to webpack native worker support v1 - broken prod build
* Fix: Use custom path in HtmlWebpackPlugin
* Fix: Loading workers from CDNs
* Fix: Avoid issues with jest ESM support by mocking `createWorker` files
* Fix: move the custom mockWorker rendering layout to `test/mocks`
Co-authored-by: Leon Sorokin <leeoniya@gmail.com>
* Navigation: Start creating new NavBarMenu component
* Navigation: Apply new NavBarMenu to NavBarNext
* Navigation: Remove everything to do with .sidemenu-open--xs
* Navigation: Ensure search is passed to NavBarMenu
* Navigation: Standardise NavBarMenuItem
* This extra check isn't needed anymore
* Navigation: Refactor <li> out of NavBarMenu
* Navigation: Combine NavBarMenuItem with DropdownChild
* use spread syntax since performance shouldn't be a concern for such small arrays
* Improve active item logic
* Ensure unique keys
* Remove this duplicate code
* Add unit tests for getActiveItem
* Add tests for NavBarMenu
* Rename mobileMenuOpen -> menuOpen in NavBarNext (since it can be used for mobile menu or megamenu)
* just use index to key the items
* Use exact versions of @react-aria packages
* Navigation: Make the dropdown header a NavBarMenuItem
* Navigation: Stop using dropdown-menu for styles
* Navigation: Hide divider in NavBarMenu + tweak color on section header
When a request going through Grafana data source proxy responds with a websocket
upgrade response we cannot override the response body since it produces an error.
This problem seems to have been introduced in Grafana v8.0 by #38962.
In addition #40303 added same problem.
Fixes#41292
* Update dependency optimize-css-assets-webpack-plugin to v6
* Update to use exact version
Co-authored-by: Renovate Bot <bot@renovateapp.com>
Co-authored-by: Zoltán Bedi <zoltan.bedi@gmail.com>
* Refactor: adds affectedPanelIds and fixes some bugs
* Refactor: Fixes all dependencies and affected panel ids
* Refactor: glue it together with events
* Chore: remove debug code
* Chore: remove unused events
* Chore: removes unused function
* Chore: reverts processRepeats
* Chore: update to use redux state
* Refactor: adds feature toggle in variables settings
* Refactor: adds appEvents to jest-setup
* Tests: adds tests for strict panel refresh logic
* Refactor: small refactor
* Refactor: moved to more events
* Tests: fixes test
* Refactor: makes sure we store strictPanelRefreshMode in dashboard model
* Refactor: reporting and adds tests
* Tests: fix broken tests
* Tests: fix broken initDashboard test
* Tests: fix broken Wrapper test
* Refactor: adds solution for $__all_variables
* Chore: updates to radio button
* Refactor: removes toggle and calculates threshold instead
* Chore: fix up tests
* Refactor: moving functions around
* Tests: fixes broken test
* Update public/app/features/dashboard/services/TimeSrv.ts
Co-authored-by: kay delaney <45561153+kaydelaney@users.noreply.github.com>
* Chore: fix after PR comments
* Chore: fix import and add comment
* Chore: update after PR comments
Co-authored-by: kay delaney <45561153+kaydelaney@users.noreply.github.com>
Improves error handling when installing plugins by checking for
error before adding a defer of closing of the zip reader to not
create a panic when there's an invalid zip file.
Fixes#41029
Clarifies documentation in regards to data source provisioning and certain
settings that earlier was explained as applicable to All data sources.
Fixes#19574
Co-authored-by: Will Browne <wbrowne@users.noreply.github.com>
* Update dependency html-loader to v3
* Chore(dependencies): Ignore html-loader in grafana-toolkit until it moves to webpack 5
Co-authored-by: Renovate Bot <bot@renovateapp.com>
Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
* First pass at showing data override dots
* Added test
* Adding override rule dots
* Added unit test
* Minor changes
* Update public/app/features/dashboard/components/PanelEditor/OptionsPaneItemDescriptor.tsx
Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>
* Fixed ts issues
* review feedback changes
* skipp broken e2e test
Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>
* First working version of shared cursor for state timeline
* Only publish x value for time series
* Don't send legacy graph event
* Don't add y scale to cursor sync
* Snap cursor to the bottom of the canvas when sync is out of bounds
* Fix snapshot
* API: return resource ID when deleting datasource and library element
* keep status codes consistent
* fix element ID
* add test
* improve response struct
* update endpoints documentation
* LibraryElementIDResponse -> DeleteLibraryElementResponse
* streamline kbn.addSlashes and add a test, streamline escaping in angular tip() function
* switch to double-html-encoding when building intermediate string
* do not suppress NoData state
* extract conversion of state to postable alert + tests
* create a special alert instance if nodata
* use NoData when converting from Keep Last State instead of Alerting
* add silence during migration if NoData is mapped to KeepLastState.
* DataSourceRef: Fixes migrations for mixed data source panels & queries and adds unit tests for data source ref migration
* Fixing tests and migration logic a bit more
* use helper functions
* simplify migration logic
* Fixing test
Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
* DataSourceVariables: Fix storing uninterpolated datasource in ds ref uid prop
* better variable name
* Fix issue changing from data source variable to specific data source of the same type
* revert name change
* Update public/app/features/plugins/datasource_srv.ts
Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
* Simply logic and remove deep clone
* updated comment
Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
* Use secrets service in pluginproxy
* Use secrets service in pluginxontext
* Use secrets service in pluginsettings
* Use secrets service in provisioning
* Use secrets service in authinfoservice
* Use secrets service in api
* Use secrets service in sqlstore
* Use secrets service in dashboardshapshots
* Use secrets service in tsdb
* Use secrets service in datasources
* Use secrets service in alerting
* Use secrets service in ngalert
* Break cyclic dependancy
* Refactor service
* Break cyclic dependancy
* Add FakeSecretsStore
* Setup Secrets Service in sqlstore
* Fix
* Continue secrets service refactoring
* Fix cyclic dependancy in sqlstore tests
* Fix secrets service references
* Fix linter errors
* Add fake secrets service for tests
* Refactor SetupTestSecretsService
* Update setting up secret service in tests
* Fix missing secrets service in multiorg_alertmanager_test
* Use fake db in tests and sort imports
* Use fake db in datasources tests
* Fix more tests
* Fix linter issues
* Attempt to fix plugin proxy tests
* Pass secrets service to getPluginProxiedRequest in pluginproxy tests
* Fix pluginproxy tests
* Revert using secrets service in alerting and provisioning
* Update decryptFn in alerting migration
* Rename defaultProvider to currentProvider
* Use fake secrets service in alert channels tests
* Refactor secrets service test helper
* Update setting up secrets service in tests
* Revert alerting changes in api
* Add comments
* Remove secrets service from background services
* Convert global encryption functions into vars
* Revert "Convert global encryption functions into vars"
This reverts commit 498eb19859.
* Add feature toggle for envelope encryption
* Rename toggle
Co-authored-by: Emil Tullstedt <emil.tullstedt@grafana.com>
Co-authored-by: Joan López de la Franca Beltran <joanjan14@gmail.com>
* Support custom annotations and labels when testing contact points
* Add modal for testing contact point
* add option for custom notification type
* use annotation and labels fields from rule editor
* update receivers test for new contact point testing method
* rename modal and remove reserved keys for annotations
* add docs for testing contact points
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
Co-authored-by: George Robinson <george.robinson@grafana.com>
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
* move evaluation function out of loop
* extract updateRule function
* isolate alertRule change. update returns new rule and the evaluation accepts the rule as argument
* extract retry loop into a function
* add function wide log context.
* refactor metrics + add tests + replace timeNow with schedule.clock
Azure Monitor: Add Resource Picker to Template Variable Query Editor
- Should fix bug related broken template variables that relied on a deprecated default workspace.
* TimeZonePicker: Allow specifying internal timezones to display
* Elasticsearch: Add time zone setting to Date Histogram aggregation
* rename time_zone to timeZone
* Add tests
* fix typo
* Update packages/grafana-data/src/datetime/timezones.ts
Co-authored-by: Chris Cowan <chris@chriscowan.us>
Co-authored-by: Chris Cowan <chris@chriscowan.us>
* Navigation: Remove plus button behind feature toggle
* Navigation: Add home button behind feature toggle
* Navigation: Move settings/admin to bottom section behind feature toggle
* Navigation: Refactor grafana logo to be a NavBarItem
* Navigation: Create new PluginSection and styling changes to support new sections
* Navigation: Hack to use mobile menu as a mega menu for now
* Navigation: Only render plugin section if there are items
* Navigation: mobile menu is always 100% width if toggle is off
* Navigation: Reset width back to 48 and fix broken css property
* Navigation: Create generic NavBarSection component to reduce repetition
* Navigation: Don't show sublinks for core items
* Navigation: Comments from UX review
* Navigation: Remove mobile menu hack
* Navigation: Unit tests for enrichConfigItems and other minor review comments
* Navigation: Move section logic to backend
* Navigation: Refactor alerting links out into a separate function
* Navigation: More tests for isLinkActive
* Linting...
* Navigation: Create new NavBar component for when feature toggle is enabled
* sass: add in the option for extneral link color to tooltip anchor tag
* variable editor: change the link in the tool tip to external styling
* fixed class name to be the same as other instances of this
* Grafana-UI: Update theme.spacing to support string value when called with just one arugment
This allows theme.spacing("auto") to be valid
* Grafana-UI: Support width="auto" for Select component
This allows for inline Selects that are sized based on their content,
rather than occupying block-width
* Add toOption for creating Select options to @grafana/data
* Add test util
* refactor goconvey in some provisioning subpackages
* fix goconvey in provisioning/datasources
* remove goconvey from notifiers subpackage
* finally resolve goconvey in dashboards subpackage
* Refactor: remove `scopes` from CentrifugeSrv, remove dependencies on window/config/user context
* Refactor: add GrafanaLiveChannelConfigService to wrap direct access to *Scope classes
* Refactor: added GrafanaLiveService acting like a proxy to GrafanaLiveSrv + LiveChannelConfigSrv
* Refactor: live module instantiation
* Refactor: import fixes
* Fix: URL construction in centrifugeSrv
* Update dependency @types/expect-puppeteer to v4
* Chore: Remove @types/expect-puppeteer since it doesn't seem to be used/needed anywhere
Co-authored-by: Renovate Bot <bot@renovateapp.com>
Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
* E2E: Do not skip visualization suggestions
Was disabled because drone performance is so varied that it sometimes completes and sometimes needs a lot more time, trying to increase wait time and see if that helps.
* Made it possible to go directly to panel edit
* Fixes
* Align range to seconds in log queries
* Use default display processor if there is none in FieldDisplayProxy
* Allow links defined in dataframe
* Remove debug log
* Fix typings for span links
* Lint go
* Fix tests
* Update tests
* Add test for the display proxy
* Streamline the fallback for diplayProcessor
* Update dependency @testing-library/dom to v8
* Update our use of useFakeTimers
Co-authored-by: Renovate Bot <bot@renovateapp.com>
Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
* Geomap: add initial text labels layer
* add fontsize to text labels layer
* refactor feature styles in marker and text layers
* hide template and pick default field
Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
* Added an option to discord notifier to use discord's webhook name (useful for customizing notifications).
* Support ngalert system with discord username toggle
* Added ngalert discord test
* Apply suggestions from code review
Co-authored-by: gotjosh <josue.abreu@gmail.com>
* Docs updated with discord username setting
* Fix api integration test
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
Co-authored-by: gotjosh <josue.abreu@gmail.com>
* explore: allow switching graph-styles
* refactor: simplify code
* adjust test to test a case that can really happen
* better generate-options approach
* explore: graph styles: remove url functionality
* not-stacked-bars should be filled
* added missing permissions check
* moved the permission check to the datasource component.
* added test for checking permissions.
* added tests with different permissions.
* minor refactoring so the mockUserPermisson can be reused.
* Mixed-ds: Return both results from the same datasource
* fix mixed data source
* Change concatMap to mergeMap
* Make sure to return correct state at the end
* Make sure to count the targets as well
* Use Marcus's version
* Fix stict error
* Apply suggestions from code review
Co-authored-by: Marcus Andersson <marcus.andersson@grafana.com>
Co-authored-by: Marcus Andersson <marcus.andersson@grafana.com>
* Initial pass to move panel state to it's own, and make it by key not panel.id
* Progress
* Not making much progress, having panel.key be mutable is causing a lot of issues
* Think this is starting to work
* Began fixing tests
* Add selector
* Bug fixes and changes to cleanup, and fixing all flicking when switching library panels
* Removed console.log
* fixes after merge
* fixing tests
* fixing tests
* Added new test for changePlugin thunk
* Initial struture in place
* responding to state changes in another part of the state
* bha
* going in a different direction
* This is getting exciting
* minor
* More structure
* More real
* Added builder to reduce boiler plate
* Lots of progress
* Adding more visualizations
* More smarts
* tweaks
* suggestions
* Move to separate view
* Refactoring to builder concept
* Before hover preview test
* Increase line width in preview
* More suggestions
* Removed old elements of onSuggestVisualizations
* Don't call suggestion suppliers if there is no data
* Restore card styles to only borders
* Changing supplier interface to support data vs option suggestion scenario
* Renamed functions
* Add dynamic width support
* not sure about this
* Improve suggestions
* Improve suggestions
* Single grid/list
* Store vis select pane & size
* Prep for option suggestions
* more suggestions
* Name/title option for preview cards
* Improve barchart suggestions
* Support suggestions when there are no data
* Minor change
* reverted some changes
* Improve suggestions for stacking
* Removed size option
* starting on unit tests, hit cyclic dependency issue
* muuu
* First test for getting suggestion seems to work, going to bed
* add missing file
* A basis for more unit tests
* More tests
* More unit tests
* Fixed unit tests
* Update
* Some extreme scenarios
* Added basic e2e test
* Added another unit test for changePanelPlugin action
* More cleanup
* Minor tweak
* add wait to e2e test
* Renamed function and cleanup of unused function
* Adding search support and adding search test to e2e test
* Make legend sorting work in Time series panel
* Import from schema
Add properties to the cue schema as well
* Order stacking
* Add tests for orderIdsByCalcs
* Add check for legend options
* Fix cue schema
* UI fixes
* Order bars as well in barchart
* Use different index when ordered
* Legend sort series doc
* Fix nits
* Update docs/sources/panels/legend-options.md
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
* Fix linting
* Apply suggestions from code review
Co-authored-by: Ursula Kallio <73951760+osg-grafana@users.noreply.github.com>
* Update docs/sources/panels/legend-options.md
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
Co-authored-by: Ursula Kallio <73951760+osg-grafana@users.noreply.github.com>
* Chore(dependencies): Ignore updates to copy-webpack-plugin in @grafana/toolkit for now
* Chore(dependencies): Ignore updates to css-loader in @grafana/toolkit for now
Co-authored-by: Gábor Farkas <gabor.farkas@gmail.com>
* ErrorBoundary: Support recovering from errors in PanelChrome & PanelRenderer
* Rename recover to dependencies
* Pushed an update that fixed test and adds new error mode to DebugPanel
* Alerting: Validate contact point configuration during the migration
This minimises the chances of generating broken configuration as part of the migration. Originally, we wanted to generate it and not produce a hard stop in Grafana but this strategy has the chance to avoid delivering notifications for our users.
We now think it's better to hard stop the migration and let the user take care of resolving the configuration manually.
* scroll to view with panel query
* scroll to view with param
* no export const
* mock useLocation
* Updates to make update function from useQueryParams work
* show options
* flip logic
Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
* Correct price-plans list for this feature
The [Pricing Page][0] states that Enhanced LDAP is only for the Advanced plan
See b59520986c
[0]: https://grafana.com/products/cloud/pricing/
* Also update price plans on Enhanced LDAP page
* Update dependency @types/node to v14
* Remove global var
Co-authored-by: Renovate Bot <bot@renovateapp.com>
Co-authored-by: Zoltán Bedi <zoltan.bedi@gmail.com>
* avoid duplicate allocations
* set labels
* Replace NaN in matrix with null
* Refactor and add test
* Update test
* Append response only if no error
Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
* ReleaseNotes: Updated changelog and release notes for 8.2.2
* Add entry for 8.2.2 release notes
Co-authored-by: Alexandra Vargas <alexa1866@gmail.com>
* Add extra fields to OSS types to support enterprise
* Create a service account at the same time as the API key
* Use service account credentials when accessing API with APIkey
* Add GetRole to service, merge RoleDTO and Role structs
This patch merges the identical OSS and Enterprise data structures, which improves the code for two reasons:
1. Makes switching between OSS and Enterprise easier
2. Reduces the chance of incompatibilities developing between the same functions in OSS and Enterprise
* If API key is not linked to a service account, continue login as usual
* Fallback to old auth if no service account linked to key
* Add CloneUserToServiceAccount
* Adding LinkAPIKeyToServiceAccount
* Handle api key link error
* Better error messages for OSS accesscontrol
* Set an invalid user id as default
* Re-arrange field names
* ServiceAccountId is integer
* Better error messages
Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>
Co-authored-by: Eric Leijonmarck <eric.leijonmarck@gmail.com>
Co-authored-by: Emil Tullstedt <emil.tullstedt@grafana.com>
Co-authored-by: Ieva <ieva.vasiljeva@grafana.com>
Co-authored-by: Gabriel MABILLE <gamab@users.noreply.github.com>
* Adding more starter dashboards for Azure Monitor data source
* modified dashboard format to match grafana 3.1+ for panel datasource variable templating
* Minor fix to dashboard config
* Getting rid of individual links to dropdown and adding dropdown
* Minor config changes
* Readding dashboard linking and
* Renamed dashboards, added descriptios and exported them properly for external sharing
* docs: update frontend style guide to highlight new function paradigm
* docs: add section for default exports
* chore: some typo/syntax/grammar fixes
* chore: change new additions from rule to recommendation
* small typo fix
* RowsToFields: Fix issue with field names that are numbers
* Only add the index accessor if field name does not conflict with it
* fix lint
Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
* update loki
* install openssl from alpine's edge repository
* extracttraceid moved to tracing package
* remove exit if warning limit is exceeded
* disable flaky libraryelements test
* context all the things
* apply feedback
* rollback some alerting changes
* rollback some alerting changes #2
* more rollbacks
* more rollbacks #2
* more rollbacks #3
* more rollbacks #4
* fix integration test
* add missing context
* add missing and remove incorrect dispatch
* Add global week start option to shared preferences
* Add default_week_start to configuration docs
* Add week start option to dashboards
* Add week start argument to tsdb time range parser
* Fix strict check issues
* Add tests for week start
* Change wording on default_week_start documentation
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
* Update week_start column to be a nullable field
Co-authored-by: Emil Tullstedt <emil.tullstedt@grafana.com>
* Update configuration to include browser option
* Update WeekStartPicker container selector
Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>
* Add menuShouldPortal to WeekStartPicker to remove deprecation warning
Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
* Add inputId to WeekStartPicker
* Use e2e selector on WeekStartPicker aria-label
* Simplify WeekStartPicker onChange condition
* Specify value type on WeekStartPicker weekStarts
* Remove setWeekStart side effect from reducer
* Fix updateLocale failing to reset week start
* Store week start as string to handle empty values
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
Co-authored-by: Emil Tullstedt <emil.tullstedt@grafana.com>
Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>
Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
* Remove Convey from dashboards
* Add context for dashboards
* Remove Convey from dashboards
* refactor tests to run setup each time
* Fix last tests
* Adjust after rebase
* Remove print statement
Co-authored-by: Serge Zaitsev <serge.zaitsev@grafana.com>
Clicking the "Getting started with Grafana" link does nothing in this page. Added the additional "getting-started" to the ref.
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
* Fix processing for table in dashboard - expolre compatible
* Add processing of histograms
* Interpolsate rate_interval in step field
* Add tests
* Fix function name
* Extract internal range and interval variables to constants
* Fix typings, refactor, simplify
* Fix constant that was missing _ms
* added post installation steps.
* changes according to feedback.
* removing return union null type.
* added tests.
* changing the wording of the button to 'create a..'
* updated tests to check for the updated copy.
* changing the back to be a regular back button.
* updated snapshot
* add config option for alertmanager linking
* Add button for silencing a rule
* use uid for alertmanager
* move alertmanager link to separate function
* Text Panel: fixes unnecessary scroll in tables
* uses more robust solution that covers every edge case
* chore: uses variables instead and sets first child margins to zero
* override margin for only h1 and figure elements
* remove override styles for h1,table markdown contents
* Force use drone-cli 1.4.0
* Small modifications to prevent null generation
* Sign drone
* Use bingo to declare drone-cli version
* Update message in Makefile
* Update to latest grabpl version
* grafana-ui: refactor: move laziness to a lower level in code-editor
* grafana-ui: re-export react-monaco-editor
* rename export
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
* improved comment
* reverted name change
we already have an export with that name
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
* Update dependency @opentelemetry/semantic-conventions to v1
* chore(tempo): update import to match semantic-conventions api changes
Co-authored-by: Renovate Bot <bot@renovateapp.com>
Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>
* Add onDataSourceChange to optional components
- Fixes a bug where the user can select twice and overwrite all queries
- Adds handler to control main datasoruce selection to the optional components.
* only pass onDatasource change when necessary
* Initial pass to move panel state to it's own, and make it by key not panel.id
* Progress
* Not making much progress, having panel.key be mutable is causing a lot of issues
* Think this is starting to work
* Began fixing tests
* Add selector
* Bug fixes and changes to cleanup, and fixing all flicking when switching library panels
* Removed console.log
* fixes after merge
* fixing tests
* fixing tests
* Added new test for changePlugin thunk
* Alerting: Remove invalid Slack URL as we migrate notification channels
Grafana will accept any type of utf8 valid string as the Slack URL and will simply fail as we try to deliver the notification of the channel. The Alertmanager will fail to apply a configuration if the URL of the Slack Receiver is invalid.
This change takes that into account by removing the URL for the receiver as we migrate notification channels that do not pass the url validation. As we assume the notification was not being delivered to being with.
* Add a log line when we modify the channel
Co-authored-by: Yuriy Tseretyan <yuriy.tseretyan@grafana.com>
* Alerting: Fixes a bug when trying to sync broken alertmanager config
Broken alertmanager configuration has the potential to be introduced as part of a migration e.g. due to incompatible data between what grafana accepts and what the Alertmanager expects. When this happens, we expect an eventually consistent behaviour where we'll keep trying to apply the configuration until it works.
As part of change in https://github.com/grafana/grafana/pull/39237 we introduced a regression that modified this behaviour and instead tried to create a new Alertmanager for that organization everytime, which eventually ended up in a panic due to a duplicate metrics being registered.
This PR fixes that and introduces a test to catch further regressions.
* Remove disable orgs
* WIP: adds react-aria package to package.json
* adds focus trapping to the calendar widget
* makes focus to move in and out of the widget
* Chore: remove unused component
* WIP: adds keyboard nav to calendar
* adds close button to calendar on wide screen
* Chore: update test to reflect new changes
* use more descriptive aria label
* prune duplicate absolute timeRange aria label
* TimePicker: Use aria overlays to enable closing with esc (#40045)
* Move timepicker to function component
* update overlayprops
* Remove unused import
* Fix for picker closing before setting the range when selecting quick ranges
* use more descriptive aria label
* update test to correspond with new label
* chore: some nit fix
* chore: used specific version for react-aria/overlay package
* Chore: refactor timePickerCalendar component
* chore: nit fixes
* chore: nit fixes
* reverts back to main and re-add deps with yarn 2
* chore: removes react-aria deps from root
* Chore: replace default export
Co-authored-by: Oscar Kilhed <oscar.kilhed@grafana.com>
Co-authored-by: Hugo Häggmark <hugo.haggmark@gmail.com>
* build(yarn): add yarn-outdated plugin for checking outdated dependencies
* refactor(frontend-metrics): update dep and vulnerablity commands to work with yarn berry
* feat(frontend-metrics): introduce critical vulnerabilities count
* feat(frontend-metrics): echo out critical vulnerabilities
* Dashboard: Show logs on time series when hovering
* Fix passing hover handler to LogRow
* use DataHoverEvent
* use DataHoverEvent
* Clean up
Co-authored-by: Piotr Jamróz <pm.jamroz@gmail.com>
* Prometheus: Run Explore both queries trough backend
* Refactor, simplify
* Set default values for query type selector
* Run multiple queries as one query trough backend
* Remove trailing newlines
* Pass utcOffset
* Remove trailing comma
* WIP: Implementatioon of exemplars
* add sampling for exemplars
* Refactor to use response as custom metadata
* Simplify processing of exemplars
* Update, clean up
* Refactor the way how we get available exemplars
* Simplify exemplars disabling and running on frontend
* Add tests
* Update toggle
* Remove console log
* Fix go linting
* Fix e2e test
* Trigger Build
* Compare lengts, small fix
* Remove duplicated time check
* Address feedback
* Remove redundant ! as not needed
* Update
* ReleaseNotes: Updated changelog and release notes for 8.2.1
* Update docs after running prettier:write
Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
* Rich History: improve local storage error handling
* Reduce number of max items and update docs
* Rotate not-starred items and add tests
* Add missing property to initial state
* Unify date in richHistory tests
* Show a warning message that rich history limit has been reached
* Add missing param
* Add file blacklist to `grafana-cli cue gen-ts` cmd
* Add CI step checking all cuetsification is done
* Add dummy command to make the next one fail
* Generate drone bits
* Check diff output failure
* Echo list of untracked files, for failure locality
* Move git cleanness checking into script
* Blacklist of cue files is complete and correct
* Remove news panel plugin from cuetsify blacklist
* Dummy commit, check that untracked gen still fail
* Tie off remaining errors
* Re-add barchart to blacklist
* Remove file left around by earlier pipeline
* Commit generated news models.gen.ts
* Include eslint as part of cuetsified output gen
* Update pkg/cmd/grafana-cli/commands/cuetsify_command.go
Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
* Update scripts/drone/steps/lib.star
Co-authored-by: Maria Alexandra <239999+axelavargas@users.noreply.github.com>
* Update drone.yml
* Last fix on .drone.yml
Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
Co-authored-by: Maria Alexandra <239999+axelavargas@users.noreply.github.com>
* fix(pluginsettings): reject with error so datasource plugin loading failures still render ui
* feat(pluginpage): handle plugin loading error
* refactor(datasources): separate out datasource and meta loading so store has info for deletion
* fix(datasourcesettings): introduce loading flag to wait for datasource and meta loading
* test(datasourcesettings): fix failing test
* test(datasources): assert loading status of datasource settings
* test(datasources): update action tests for latest changes
* Setup extensible filters
* Fix test
* Handle filter as array
* Add className
* Abstract getFilters
* Make docs link external
* Use underline for links in tooltips instead of link color
Co-authored-by: Selene <selenepinillos@gmail.com>
* Encryption: Add support to encrypt/decrypt sjd
* Add datasources.Service as a proxy to datasources db operations
* Encrypt ds.SecureJsonData before calling SQLStore
* Move ds cache code into ds service
* Fix tlsmanager tests
* Fix pluginproxy tests
* Remove some securejsondata.GetEncryptedJsonData usages
* Add pluginsettings.Service as a proxy for plugin settings db operations
* Add AlertNotificationService as a proxy for alert notification db operations
* Remove some securejsondata.GetEncryptedJsonData usages
* Remove more securejsondata.GetEncryptedJsonData usages
* Fix lint errors
* Minor fixes
* Remove encryption global functions usages from ngalert
* Fix lint errors
* Minor fixes
* Minor fixes
* Remove securejsondata.DecryptedValue usage
* Refactor the refactor
* Remove securejsondata.DecryptedValue usage
* Move securejsondata to migrations package
* Move securejsondata to migrations package
* Minor fix
* Fix integration test
* Fix integration tests
* Undo undesired changes
* Fix tests
* Add context.Context into encryption methods
* Fix tests
* Fix tests
* Fix tests
* Trigger CI
* Fix test
* Add names to params of encryption service interface
* Remove bus from CacheServiceImpl
* Add logging
* Add keys to logger
Co-authored-by: Emil Tullstedt <emil.tullstedt@grafana.com>
* Add missing key to logger
Co-authored-by: Emil Tullstedt <emil.tullstedt@grafana.com>
* Undo changes in markdown files
* Fix formatting
* Add context to secrets service
* Rename decryptSecureJsonData to decryptSecureJsonDataFn
* Name args in GetDecryptedValueFn
* Add template back to NewAlertmanagerNotifier
* Copy GetDecryptedValueFn to ngalert
* Add logging to pluginsettings
* Fix pluginsettings test
Co-authored-by: Tania B <yalyna.ts@gmail.com>
Co-authored-by: Emil Tullstedt <emil.tullstedt@grafana.com>
* Extract search users to a new service
* Fix wire provider
* Fix common_test and remove RouteRegister
* Remove old endpoints
* Fix test
* Create search filters using interfaces
* Move Enterprise filter, rename filter for filters and allow use filters with params
* Each filter has unique key
* Back activeLast30Days filter to OSS
* Fix tests
* Delete unusued param
* Move filters to searchusers service and small refactor
* Fix tests
* ReleaseNotes: Updated changelog and release notes for 8.2.0
* Add link & remove empty line in CHANGELOG
* remove empty line
Co-authored-by: Elfo404 <me@giordanoricci.com>
* rename Bind to BindMiddleware
* make things private
* removed unused part of data bindings
* provide json and form binding helpers
* add example of binding migration in login api
* implement validation
* fix tests
* remove debug output
* put new bind api into macaron pacakge
* revert bind api breaking change
* document licensing permissions and roles
* Update docs/sources/enterprise/access-control/fine-grained-access-control-references.md
Co-authored-by: Gabriel MABILLE <gamab@users.noreply.github.com>
* Update docs/sources/enterprise/access-control/permissions.md
Co-authored-by: Gabriel MABILLE <gamab@users.noreply.github.com>
* update action name for "licensing.reports:read"
* put licensing editor role back in, more table formatting
Co-authored-by: Gabriel MABILLE <gamab@users.noreply.github.com>
* refactor licenseURL function to use context and export permission evaluation fction
* remove provisioning file
* refactor licenseURL to take in a bool to avoid circular dependencies
* remove function for appending nav link, as it was only used once and move the function to create admin node
* better argument names
* create a function for permission checking
* extend permission checking when displaying server stats
* enable the use of enterprise access control actions when evaluating permissions
* import ordering
* move licensing FGAC action definitions to models package to allow access from oss
* move evaluatePermissions for routes to context serve
* change permission evaluator to take in more permissions
* move licensing FGAC actions again to appease wire
* avoid index out of bounds issue in case no children are passed in when creating server admin node
* simplify syntax for permission checking
Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
* update loading state for server stats
* linting
* more linting
* fix test
* fix a frontend test
* update "licensing.reports:read" action naming
* UI doesn't allow reading only licensing reports and not the rest of licensing info
Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
* feat: add displayname
* refactor: marshal role for fallback displayname
* refactor: moved to private heuristic function for displaynames
* refactor: display name trimspace and remove prefix
* refactor: renaming of fallbackFunction
* refactor: moved methods below struct types
* PanelContext: Adds a container enum / string to inform panel about what the outer container/app state is
* Changing to use existing CoreApp
* fixing unified alerting type errors
* Alerting: (wip) add template funcs
* Alerting: (wip) numeric template functions
* Alerting: (wip) template functions
* Test for the "args" function
* Alerting: (wip) Documentation for template functions
* Alerting: template functions - refactor
* code review changes
* disable linter error
* Use Prometheus implementation of TemplateExpander
* Update docs/sources/alerting/unified-alerting/alerting-rules/create-grafana-managed-rule.md
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
* change templateCaptureValue to support using template functions
* Update pkg/services/ngalert/state/template.go
Co-authored-by: gotjosh <josue.abreu@gmail.com>
* Test and documentation added for reReplaceAll template function
* complete missing functions, documentation and tests
* Use the alert instance's evaluation time for expanding the template
* strvalue graphlink and tablelink functions
* delete duplicate test
* make strvalue return an empty string
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
Co-authored-by: gotjosh <josue.abreu@gmail.com>
Remove validation for labels to be accepted in the Alertmanager, This helps with datasources that produce non-compatible labels.
Adds an "object_matchers" to alert manager routers so we can support labels names with extended characters beyond prometheus/openmetrics. It only does this for the internal Grafana managed Alert Manager.
This requires a change to alert manager, so for now we use grafana/alertmanager which is a slight fork, with the intention of going back to upstream.
The frontend handles the migration of "matchers" -> "object_matchers" when the route is edited and saved. Once this is done, downgrades will not work old versions will not recognize the "object_matchers".
Co-authored-by: Kyle Brandt <kyle@grafana.com>
Co-authored-by: Nathan Rodman <nathanrodman@gmail.com>
* Add expand all button for rule list group view
* filter out recording rules by default
* Create rule type filter
* Add placeholder text for inputs
* WIP move Silences to use DynamicTable
* Use dynamic table for silences page
* hide expand all for state list view
* Add placeholders for inputs
* Update selector in receivers test
* Fix strict error for ruleType
* remove redundant placeholder text and cleanup hooks
* add fixed width for schedule
* Rebase with dynamic table for silences
* only show expand/collapse when filters are active
* NavBar: Styling tweaks to tidy up appearance
* NavBar: Add external link icon to external links
* NavBar: Dim the external link icon
* bump drone
* NavBar: Rename variable to better describe what it's doing
* feat(grafana-ui): externalise react-inlinesvg for mocking
* feat(grafana-toolkit): mock react-inlinesvg to prevent svg fetch errors in tests
* test(toolkit): remove assertion on array length of moduleNameMapper overrides
* feat(toolkit): set testId to match the Icon name prop in react-inlinesvg mock
* Add secrets service
* Revert accidental changes in util encryption
* Make minor changes
Move functional options to models
Revert renaming types to models
* Add context
* Minor change in GetDataKey
* Use CreateDataKeyWithDBSession in CreateDataKey
* Handle empty DEK name in DeleteDataKey
* Rename defaultProvider
* Remove secrets store service
* refactor(Plugins/Admin): add a "badge" for displaying available updates
* refactor(Plugins/Admin): rename component
* refactor(Plugins/Admin): use the PluginListItemBadges component
* Basic implementation of getLogsVolumeQuery method
* Add todos
* Add a switcher to automatically load logs volume
* De-scope dismissing logs volume panel
* De-scope logs volume query cancellation
* Remove todo
* Aggregate logs volume components in single panel
* Show logs volume only when it's available
* Aggregate logs volume by level
* Simplify aggregation
* Handle no logs volume data
* Add error handling
* Do not show auto-load logs volume switcher when loading logs volume is not available
* Remove old logs volume graph
* Clean up
* Make getting data provider more generic
* Provide complete logs volume data (error, isLoading)
* Display more specific error message
* Add missing props to mocks
* Remove setRequest method
* Mark getQueryRelatedDataProviders as internal
* Add missing dataQueryRequest and add a todo
* Remove redundant loading state
* Do not mutate existing queries
* Apply fix for zooming-in from main
* Post-merge fixes
* Create collection for data provider results
* Use more generic names
* Move aggregation logic to Loki logs volume provider
* Move LogsVolume to common types
* Update tests
* Post-merge fixes
* Fix mapping related data values
* Simplify prop mappings
* Add docs
* Fix property name
* Clean-up
* Mark new types as internal
* Reduce number of providers to logs volume only
* Simplify data structure to DataQueryResponse
* Move Logs Volume panel to a separate component
* Test logsVolumeProvider.ts
* Add observable version of datasource mock
* Test getLogsVolumeDataProvider method
* Test LogsVolumePanel
* Test logs volume reducer
* Clean up
* Clean up
* Fix test
* Use sum by to use level field directly
* Fix strict type errors
* Fix strict type errors
* Use "logs" instead of "unknown" if only one level was detected
* Add docs about logs volume
* Rename histogramRequest to logsVolumeRequest
* Use LogsVolumeContentWrapper all content types
* Move `autoLoadLogsVolume` local storage handling
* Fix strict error
* Move getting autoLoadLogsVolume to initial state
* Cancel current logs volume subscription
* Test cancelling subscriptions
* Update docs/sources/datasources/loki.md
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
* Update packages/grafana-data/src/types/explore.ts
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
* Inline container styles
* Ensure logs volume is aggregated per each subscription separately
* Simplify logs volume provider
* Type-guard support for logs volume provider
* Simplify event handlers to avoid casting
* Clean up and docs
* Move auto-load switcher to logs volume panel
* Fix test
* Move DataSourceWithLogsVolumeSupport to avoid cross referencing
* Simplify interface
* Bring back old histogram and hide the new one behind a feature flag
* Add missing props to logs histogram panel
* Clean up the provider when it's not supported
* Simplify storing autoLoadLogsVolume
* Remove docs
* Update packages/grafana-data/src/types/logsVolume.ts
Co-authored-by: Andrej Ocenas <mr.ocenas@gmail.com>
* Skip dataframes without fields (instant queries)
* Revert styles changes
* Revert styles changes
* Add release tag
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
Co-authored-by: Andrej Ocenas <mr.ocenas@gmail.com>
* chore(Plugins/Admin): make the Plugins Catalog the default way to interact with plugins
* chore(defaults.ini): change the default value for `plugin_admin_enabled`
* test(Plugins): make the tests pass
* Extend User type
* Render licensed roles and org units
* Combine admin icon with units
* Extract search users to a new service
* Fix wire provider
* remove mock data
* Fix icon margin
* Fix common_test and remove RouteRegister
* Remove old endpoints
* Fix test
* Add indexes to dashboards and orgs tables
* Fix lint
* Revert docs changes
* undo docs formatting
* Change order of input and filters
* Abstract aria-label into a function
* Add accessible info about user's membership
* UI tweaks
Co-authored-by: spinillos <selenepinillos@gmail.com>
* Prometheus: Run Explore both queries trough backend
* Refactor, simplify
* Set default values for query type selector
* Run multiple queries as one query trough backend
* Remove trailing newlines
* Pass utcOffset
* Remove trailing comma
* Add meta to frames only at 1 place
* Set exemplars to falsee if they are disabled
* Revert "Set exemplars to falsee if they are disabled"
This reverts commit e7b697c9f3.
* working version but with duplications.
* refactor(Plugins/Admin): use "fr" instead of "repeat" for grid columns
Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>
* fix(Plugins/Admin): use PluginIconName instead of IconName
* refactor(Plugins/Admin): store the display-mode on the state
* refactor(Plugins/Admin): use && for conditional rendering
* refactor(Plugins/Admin): rename variable
* refactor(Plugins/Admin): share code between card and row components
* test(PluginListItemRow): add tests
* test(Plugins/Admin): add a simple test for the display-mode switching
* fix(Plugins/Admin): compose styles with css``
* refactor(Plugins/Admin): rename "table" to "grid" for display modes
* test(Plugins/Browse): follow up on renaming "table" to "grid"
Co-authored-by: Levente Balogh <balogh.levente.hu@gmail.com>
Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>
* Extract search users to a new service
* Fix wire provider
* Fix common_test and remove RouteRegister
* Remove old endpoints
* Fix test
* Add indexes to dashboards and orgs tables
* Fix lint
* Expose FilterInput from grafana/ui
* Make table filter case insensitive
* Update packages/grafana-ui/src/components/Table/FilterList.tsx
Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>
Co-authored-by: Oscar Kilhed <oscar.kilhed@grafana.com>
Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>
* adding working version of notificaion banner trigger.
* Move it to enterprise
* Fixing csss, none of the pages showed our CustomScrollbar or had double scrollbars
* fixing explore
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
* Initial draft
* Added the what's new in 8.2 link to the what's new parent page
* Docker image namespace change for grafana-oss
* Additional changes and inclusion of Enterprise Docker image namespace and examples
* Fixed language related to Ubuntu-specific images, fixed some markdown and updated some version references
* Fixed enterprise image name because apparently I don't read too well
* Add context to star and stats
* Use WithTransactionalDbSession
* Add additional ctx
* Remove convey
* Fix star handler name
* Use WithDbSession, use DispatchCtx
* Remove xorm from star
* change global flag to flagset
* update pr with comments
* replace flag.args by flagset
* fix build
* migrate the schema package to use cue 4.0
* fix the load package
* added possibility to track if remote plugins could be fetched.
* adding hook to detect if remote plugins are available.
* feat(catalog): disable installed/all filter if remote plugins are unavailable
* feat(Plugins/Admin): hide the install controls if GCOM is not available
* refactor(Plugins/Admin): group `@grafana` dependencies
* fix(Plugins/Admin): don't show an error alert if a remote plugin is not available
* feat(Plugins/Admin): prefer to use the local version of the readme
* chore(Plugins/Admin): type the mocked state properly
* test(Plugins/Admin): add tests for the Plugin Details when GCOM is not available
* test(Plugins/Admin): add tests for the Browse when GCOM is not available
Co-authored-by: Marcus Andersson <marcus.andersson@grafana.com>
Co-authored-by: Levente Balogh <balogh.levente.hu@gmail.com>
* keep existing unified alert rules untouched
* move silences and other alertmanager files to the organization directory (only if it is a single organization deployment)
* assign the existing notification settings and routes to the first organization
* create default notification settings for each organization in the case of multi org deployment
* feat(catalog): introduce id and href to PluginDetailsTabs
* feat(catalog): add hrefs and ids to PluginDetails tabs. Pass queryParams to PluginDetailsBody
* feat(catalog): pass queryParams to PluginsDetailsBody and add page param to PluginListCard
* fix(catalog): prevent flicker of content by waiting for fetch details to finish loading
* feat(catalog): add tab icons to PluginDetails page
* feat(catalog): make breadcrumbs in PluginDetailsHeader aware of page queryparam
* fix(catalog): fix deeplinking to PluginDetails by comparing tabs length
* test(catalog): update tests with correct props and wrap in router
* chore(dependabot): introduce explicit npm settings
* Chore(dependabot): ignore minor/patch versions for now
* Chore(dependabot): Ignore some things that will probably require work.
* Chore(dependabot): Let's keep the yaml formatting consistent
* Chore(dependabot): Remove zone.js as it's not used anymore
* Chore(dependabot): Update reviewers to frontend-ops team
* Chore(dependabot): Set the correct frontend-ops group :|
Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>
* influxdb: flux: handle $__interval and $__interval_ms in alert-queries
* influxdb: flux: do not handle interval-variable in the frontend
* $__interval should be rounded
* added comment
* Added note about removing ; to uncomment a line. Also, reordered content and make the wordings tighter.
* Updated heading and fixed a typo.
* Bunch of small changes to make the first few sections read better.
Require guardian.New to take context.Context as first argument.
Migrates the GetDashboardAclInfoListQuery to be dispatched using context.
Ref #36734
Co-authored-by: Emil Tullstedt <emil.tullstedt@grafana.com>
Co-authored-by: sam boyer <sam.boyer@grafana.com>
* Pipeline: Add wait prop into pa11y configuration for all the pages
* Pa11y: Use e2e instance to generate html report local environment
* Pipeline: use pa11y-ci hash commit
* Pipeline: Update Pa11y thresholds
* Update package.json
* Update yarn.lock
Co-authored-by: Leon Sorokin <leeoniya@gmail.com>
* PlaylistPage: removes search due to no wildcard support
* PlaylistPage: adds back search input and wildcard search support
* makes banner to appear only when playlist does not exist
* Chore: small refactor
* Chore: some code refactoring to make it readable
* fixes focus leaving input when query is cleared
* adds styling to the emptyQueryList banner
* extracts emptyQueryListBanner component to a separate file
* adds debounce to search
* use new theme for styling
* Chore: some nit fix
* fixes empty list banner showing for a second before the full list is loaded
* Fix: removes search when playlist is empty
Co-authored-by: Ash <ashharrison90@gmail.com>
Co-authored-by: Hugo Häggmark <hugo.haggmark@gmail.com>
* Explore: prevent eplore from hiding errors containing refId
* Update public/app/features/explore/ResponseErrorContainer.tsx
Co-authored-by: Gábor Farkas <gabor.farkas@gmail.com>
Co-authored-by: Gábor Farkas <gabor.farkas@gmail.com>
* Disable external user's change role in admin
* Missing part of the tooltip text
* Disable change button with the tooltip instead dropdown
* Missing refactor
* Apply suggestion
* Add method GetAllLatestAlertmanagerConfiguration to DBStore
* add method ApplyConfig to AlertManager
* update multiorg alert manager to load all alertmanager configs at once
* refactor(Plugins/Admin): add an extra line-break between tests
* test(Plugins/Admin): add a couple of more tests for Plugin Details
* fix(Plugins/Admin): fix accidental linting issue
* Add filtering for Silences page
* Add tests Silences and SilenceEditor
* pr feedback: add field validation and test refactor
* Add test for checking content
* fix overflow for validation error message
* increase login threshold for pa11y
* Make silence filter state its own type and function
* test(Plugins/Admin): add tests for the helper functions
* chore(Plugins/Admin): add `error` field to the CatalogPlugin mock
* test(Plugins/Admin): add new properties `error` & `isDisabled` to test expectations
* refactor(Plugins/Admin): make the `errors` param optional everywhere
* fix(Plugins/Admin): fix a rebase bug
* add create and add buttons that will be linked to enterprise
* wip
* wip
* clean up
* Co-authored-by: Travis Patterson <masslessparticle@gmail.com>
Added Query Modal that can be accessed from enterprise.
* reset docs
* reset docs
* docs changing
* docs
* docs
* unexporting props
* added generic ways to add more query actions and create actions
* cleanup
* adding internal tag
* adding onAddQuery to props so actions can add queries
* created a single query action component
* adding partial to query
* casting dataquery
Co-authored-by: Travis Patterson <travis.patterson@grafana.com>
* Prometheus: Add running of instant queries trough backend
* Rename response, keep zero length frames
* Remove debug log
* Simplify and fix value text
* Update duplicated and redundant go test
* Update public/app/plugins/datasource/prometheus/datasource.ts
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
* Refactor using model to create Promquery
* Fix the response length
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
* added errors in plugin list.
* added error to details page.
* adding badge on details page.
* added some more tests.
* Renamed to disabled and will handle the scenario in the plugin catalog.
* Update public/app/features/plugins/admin/components/PluginDetailsDisabledError.tsx
Co-authored-by: Levente Balogh <balogh.levente.hu@gmail.com>
* fixing some nits
* added missing isDisabeld to the mock.
* adding tests to verify scenarios when plugin is disabled.
* fixed issue with formatting after file changed on GH.
Co-authored-by: Levente Balogh <balogh.levente.hu@gmail.com>
* Update embeds with new paths, remove deprefixing
* Add dist dashboard scuemata, in CUE
Also add tests that ensure all panel plugins with models.cue are
imported by this file, so that we can't go out of sync.
* Remove comment detritus
* Check error return
* Remove hardcoded path prefix from cli validator
* Run Explore range queries trough backend
* Remove trailing comma
* Add timeRange step alignment to backend
* Remove creation of instant query on backend as it is not supported ATM
* Remove non-related frontend changes
* Pass offset to calculate aligned range trough prom query
* Update order in query error message
* tableRefIds shouldn't contain undefined refIds
* Remove cloning of dataframes when processing
* Don't mutate response
* Remove ordering of processed frames
* Remove df because not needed
* Chore: More TypeScript strict fixes
* Chore: Use filter instead of reduce to fix TypeScript error
* Chore: Retype AzureResultFormat as string
* Chore: Account for getBlocks() poor typings of reduce
* Chore: Need to explicitly check for undefined here since '' is falsey
* Move legacy accesscontrol to middleware layer
* Remove bus usage for this endpoint
* Add tests for legacy accesscontrol
* Fix tests for org user and remove one more bus usage
* Added test for FolderAdmin as suggested in the review
* Add a dashboard with all panels
* Remove nulls from exported JSON
* Remove link, add orientation
* Open base panel structure for unknown panel types
* Fix all panels dashboard
* Update
Co-authored-by: sam boyer <sdboyer@grafana.com>
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
* ReleaseNotes: Updated changelog and release notes for 8.1.4
* Chore: changed threshold for now
* add link to 8.1.4 release notes
Co-authored-by: Erik Sundell <erik.sundell@grafana.com>
* feat(Plugins/Admin): show a confirmation modal when uninstalling a plugin
* refactor(Plugins/Admin): use a helper function for showing/hiding the modal
* test(Plugins/Admin): test if the modal disappears after an uninstall
Please use this template to create your bug report. By providing as much info as possible you help us understand the issue, reproduce it and resolve it for you quicker. Therefor take a couple of extra minutes to make sure you have provided all info needed.
Please use this template to create your bug report. By providing as much info as possible you help us understand the issue, reproduce it and resolve it for you quicker. Therefore take a couple of extra minutes to make sure you have provided all info needed.
PROTIP: record your screen and attach it as a gif to showcase the issue.
"comment":"Please ask your question on [community.grafana.com/](https://community.grafana.com/). To avoid having your issue closed in the future, please read our [CONTRIBUTING](https://github.com/grafana/grafana/blob/main/CONTRIBUTING.md) guidelines.\n\nHappy graphing!"
"type":"label",
"name":"bot/question",
"addLabel":"type/question",
"removeLabel":"bot/question",
"action":"close",
"comment":"Please ask your question on [community.grafana.com/](https://community.grafana.com/). To avoid having your issue closed in the future, please read our [CONTRIBUTING](https://github.com/grafana/grafana/blob/main/CONTRIBUTING.md) guidelines.\n\nHappy graphing!"
},
{
"type":"comment",
"name":"duplicate",
"allowUsers":[],
"action":"updateLabels",
"addLabel":"type/duplicate"
"type":"comment",
"name":"duplicate",
"allowUsers":[],
"action":"updateLabels",
"addLabel":"type/duplicate"
},
{
"type":"label",
"name":"bot/duplicate",
"addLabel":"type/duplicate",
"removeLabel":"bot/duplicate",
"action":"close",
"comment":"Thanks for creating this issue! It looks like this has already been reported by another user. We’ve closed this in favor of the existing one. Please consider adding any details you think is missing to that issue.\n\nTo avoid having your issue closed in the future, please read our [CONTRIBUTING](https://github.com/grafana/grafana/blob/main/CONTRIBUTING.md) guidelines.\n\nHappy graphing!"
"type":"label",
"name":"bot/duplicate",
"addLabel":"type/duplicate",
"removeLabel":"bot/duplicate",
"action":"close",
"comment":"Thanks for creating this issue! It looks like this has already been reported by another user. We’ve closed this in favor of the existing one. Please consider adding any details you think is missing to that issue.\n\nTo avoid having your issue closed in the future, please read our [CONTRIBUTING](https://github.com/grafana/grafana/blob/main/CONTRIBUTING.md) guidelines.\n\nHappy graphing!"
},
{
"type":"comment",
"name":"needsMoreInfo",
"allowUsers":[],
"action":"updateLabels",
"addLabel":"bot/needs more info"
"type":"comment",
"name":"needsMoreInfo",
"allowUsers":[],
"action":"updateLabels",
"addLabel":"bot/needs more info"
},
{
"type":"label",
"name":"bot/needs more info",
"action":"updateLabels",
"addLabel":"needs more info",
"removeLabel":"bot/needs more info",
"comment":"Thanks for creating this issue! We think it's missing some basic information. \r\n\r\nFollow the issue template and add additional information that will help us replicate the problem. \r\nFor data visualization issues: \r\n- Query results from the inspect drawer (data tab & query inspector)\r\n- Panel settings can be extracted in the panel inspect drawer JSON tab\r\n\r\nFor dashboard related issues: \r\n- Dashboard JSON can be found in the dashboard settings JSON model view\r\n\r\nFor authentication, provisioning and alerting issues, Grafana server logs are useful. \r\n\r\nHappy graphing!"
"type":"label",
"name":"bot/needs more info",
"action":"updateLabels",
"addLabel":"needs more info",
"removeLabel":"bot/needs more info",
"comment":"Thanks for creating this issue! We think it's missing some basic information. \r\n\r\nFollow the issue template and add additional information that will help us replicate the problem. \r\nFor data visualization issues: \r\n- Query results from the inspect drawer (data tab & query inspector)\r\n- Panel settings can be extracted in the panel inspect drawer JSON tab\r\n\r\nFor dashboard related issues: \r\n- Dashboard JSON can be found in the dashboard settings JSON model view\r\n\r\nFor authentication, provisioning and alerting issues, Grafana server logs are useful. \r\n\r\nHappy graphing!"
},
{
"type":"label",
"name":"bot/no new info",
"action":"close",
"comment":"We've closed this issue since it needs more information and hasn't had any activity recently. We can re-open it after you you add more information. To avoid having your issue closed in the future, please read our [CONTRIBUTING](https://github.com/grafana/grafana/blob/main/CONTRIBUTING.md) guidelines.\n\nHappy graphing!"
"type":"label",
"name":"bot/no new info",
"action":"close",
"comment":"We've closed this issue since it needs more information and hasn't had any activity recently. We can re-open it after you you add more information. To avoid having your issue closed in the future, please read our [CONTRIBUTING](https://github.com/grafana/grafana/blob/main/CONTRIBUTING.md) guidelines.\n\nHappy graphing!"
},
{
"type":"label",
"name":"bot/close feature request",
"action":"close",
"addLabel":"not implemented",
"comment":"This feature request has been open for a long time with few received upvotes or comments, so we are closing it. We're trying to limit open GitHub issues in order to better track planned work and features. \r\n\r\nThis doesn't mean that we'll never ever implement it or that we will never accept a PR for it. A closed issue can still attract upvotes and act as a ticket to track feature demand\/interest. \r\n\r\nThank You to you for taking the time to create this issue!"
"type":"label",
"name":"bot/close feature request",
"action":"close",
"addLabel":"not implemented",
"comment":"This feature request has been open for a long time with few received upvotes or comments, so we are closing it. We're trying to limit open GitHub issues in order to better track planned work and features. \r\n\r\nThis doesn't mean that we'll never ever implement it or that we will never accept a PR for it. A closed issue can still attract upvotes and act as a ticket to track feature demand\/interest. \r\n\r\nThank You to you for taking the time to create this issue!"
- **Cloudwatch:** Add support for AWS/PrivateLink\* metrics and dimensions. [#45515](https://github.com/grafana/grafana/pull/45515), [@szymonpk](https://github.com/szymonpk)
- **Configuration:** Add ability to customize okta login button name and icon. [#44079](https://github.com/grafana/grafana/pull/44079), [@DanCech](https://github.com/DanCech)
- **Tempo:** Switch out Select with AsyncSelect component to get loading state in Tempo Search. [#45110](https://github.com/grafana/grafana/pull/45110), [@CatPerry](https://github.com/CatPerry)
### Bug fixes
- **Alerting:** Fix migrations by making send_alerts_to field nullable. [#45572](https://github.com/grafana/grafana/pull/45572), [@santihernandezc](https://github.com/santihernandezc)
<!-- 8.4.1 END -->
<!-- 8.4.0 START -->
# 8.4.0 (2022-02-16)
### Features and enhancements
- **API:** Extract OpenAPI specification from source code using go-swagger. [#40528](https://github.com/grafana/grafana/pull/40528), [@papagian](https://github.com/papagian)
- **AccessControl:** Disable user remove and user update roles when they do not have the permissions. [#43429](https://github.com/grafana/grafana/pull/43429), [@Jguer](https://github.com/Jguer)
- **AccessControl:** Provisioning for teams. [#43767](https://github.com/grafana/grafana/pull/43767), [@gamab](https://github.com/gamab)
- **Alerting:** Move slow queries in the scheduler to another goroutine. [#44423](https://github.com/grafana/grafana/pull/44423), [@grobinson-grafana](https://github.com/grobinson-grafana)
- **Alerting:** Use time.Ticker instead of alerting.Ticker in ngalert. [#44395](https://github.com/grafana/grafana/pull/44395), [@grobinson-grafana](https://github.com/grobinson-grafana)
- **Alerting:** add custom grouping to Alert Panel. [#44559](https://github.com/grafana/grafana/pull/44559), [@gillesdemey](https://github.com/gillesdemey)
- **Analytics:** Add user id tracking to google analytics. [#42763](https://github.com/grafana/grafana/pull/42763), [@autoric](https://github.com/autoric)
- **Angular:** Add AngularJS plugin support deprecation plan to docs site. [#45149](https://github.com/grafana/grafana/pull/45149), [@torkelo](https://github.com/torkelo)
- **Auth:** implement auto_sign_up for auth.jwt. [#43502](https://github.com/grafana/grafana/pull/43502), [@sakjur](https://github.com/sakjur)
- **Azure Monitor Logs:** Order subscriptions in resource picker by name. [#45228](https://github.com/grafana/grafana/pull/45228), [@sunker](https://github.com/sunker)
- **Azure monitor Logs:** Optimize data fetching in resource picker. [#44549](https://github.com/grafana/grafana/pull/44549), [@sunker](https://github.com/sunker)
- **AzureMonitor:** Filter list of resources by resourceType. [#43522](https://github.com/grafana/grafana/pull/43522), [@andresmgot](https://github.com/andresmgot)
- **BarChart:** color by field, x time field, bar radius, label skipping. [#43257](https://github.com/grafana/grafana/pull/43257), [@leeoniya](https://github.com/leeoniya)
- **Chore:** Implement OpenTelemetry in Grafana. [#42674](https://github.com/grafana/grafana/pull/42674), [@idafurjes](https://github.com/idafurjes)
- **Cloud Monitoring:** Adds metric type to Metric drop down options. [#43268](https://github.com/grafana/grafana/pull/43268), [@tw1nk](https://github.com/tw1nk)
- **CloudWatch:** Add Data Lifecycle Manager metrics and dimension. [#43310](https://github.com/grafana/grafana/pull/43310), [@ilyastoli](https://github.com/ilyastoli)
- **CloudWatch:** Add all ElastiCache Redis Metrics. [#43336](https://github.com/grafana/grafana/pull/43336), [@siavashs](https://github.com/siavashs)
- **CloudWatch:** Add new AWS/ES metrics. [#43034](https://github.com/grafana/grafana/pull/43034), [@sunker](https://github.com/sunker)
- **Cloudwatch:** Add syntax highlighting and autocomplete for "Metric Search". [#43985](https://github.com/grafana/grafana/pull/43985), [@sarahzinger](https://github.com/sarahzinger)
- **Explore:** Support custom display label for exemplar links for Prometheus datasource. [#42732](https://github.com/grafana/grafana/pull/42732), [@JokerQueue](https://github.com/JokerQueue)
- **Hotkeys:** Make time range absolute/permanent. [#43802](https://github.com/grafana/grafana/pull/43802), [@davkal](https://github.com/davkal)
- **Playlists:** Enable sharing direct links to playlists. [#44161](https://github.com/grafana/grafana/pull/44161), [@ashharrison90](https://github.com/ashharrison90)
- **SSE:** Add Mode to drop NaN/Inf/Null in Reduction operations. [#43583](https://github.com/grafana/grafana/pull/43583), [@kylebrandt](https://github.com/kylebrandt)
- **Setting:** Support configuring feature toggles with bools instead of just passing an array. [#43326](https://github.com/grafana/grafana/pull/43326), [@bergquist](https://github.com/bergquist)
- **TimeSeries:** Add support for negative Y and constant transform. [#44774](https://github.com/grafana/grafana/pull/44774), [@dprokop](https://github.com/dprokop)
- **Transformations:** Add 'JSON' field type to ConvertFieldTypeTransformer. [#42624](https://github.com/grafana/grafana/pull/42624), [@sd2k](https://github.com/sd2k)
### Bug fixes
- **Auth:** Guarantee consistency of signed SigV4 headers. [#45054](https://github.com/grafana/grafana/pull/45054), [@wbrowne](https://github.com/wbrowne)
- **CloudWatch:** Fix MetricName resetting on Namespace change. [#44165](https://github.com/grafana/grafana/pull/44165), [@yaelleC](https://github.com/yaelleC)
- **Cloudwatch :** Fixed resetting metric name when changing namespace in Metric Query. [#44612](https://github.com/grafana/grafana/pull/44612), [@yaelleC](https://github.com/yaelleC)
- **Explore:** Avoid locking timepicker when range is inverted. [#44790](https://github.com/grafana/grafana/pull/44790), [@Elfo404](https://github.com/Elfo404)
- **LibraryPanels:** Prevent long descriptions and names from obscuring the delete button. [#45190](https://github.com/grafana/grafana/pull/45190), [@zuchka](https://github.com/zuchka)
- **OAuth:** Fix parsing of ID token if header contains non-string value. [#44159](https://github.com/grafana/grafana/pull/44159), [@marefr](https://github.com/marefr)
- **Panel Edit:** Visualization search now works correctly with special characters. [#45137](https://github.com/grafana/grafana/pull/45137), [@ashharrison90](https://github.com/ashharrison90)
- **Provisioning:** Fix duplicate validation when multiple organizations have been configured. [#44151](https://github.com/grafana/grafana/pull/44151), [@marefr](https://github.com/marefr)
- **QueryField:** Fix issue with undo history when suggestion is inserted (#28656). [#39114](https://github.com/grafana/grafana/pull/39114), [@glintik](https://github.com/glintik)
- **TablePanel:** Do not prefix columns with frame name if multiple frames and override active. [#45174](https://github.com/grafana/grafana/pull/45174), [@mdvictor](https://github.com/mdvictor)
### Deprecations
AngularJS plugin support is now in a deprecated state, meaning it will be removed in a future release. Currently, that is planned for version 10 (in 2023). The documentation site has an [article](https://grafana.com/docs/grafana/next/developers/angular_deprecation/) with more details on why, when, and how. Issue [#45149](https://github.com/grafana/grafana/issues/45149)
<!-- 8.4.0 END -->
<!-- 8.4.0-beta1 START -->
# 8.4.0-beta1 (2022-02-02)
### Features and enhancements
- **Alerting:** Support WeCom as a contact point type. [#40975](https://github.com/grafana/grafana/pull/40975), [@smallpath](https://github.com/smallpath)
- **Alerting:** UI for mute timings. [#41578](https://github.com/grafana/grafana/pull/41578), [@nathanrodman](https://github.com/nathanrodman)
- **Alerting:** add settings for peer reconnection in HA mode. [#42300](https://github.com/grafana/grafana/pull/42300), [@JohnnyQQQQ](https://github.com/JohnnyQQQQ)
- **Auth:** implement auto_sign_up for auth.jwt. [#37040](https://github.com/grafana/grafana/pull/37040), [@Roguelazer](https://github.com/Roguelazer)
- **Dashboard:** Add Show unknown variables toggle to dashboard settings. [#41854](https://github.com/grafana/grafana/pull/41854), [@hugohaggmark](https://github.com/hugohaggmark)
- **Instrumentation:** Logger migration from log15 to gokit/log. [#41636](https://github.com/grafana/grafana/pull/41636), [@ying-jeanne](https://github.com/ying-jeanne)
- **MSSQL:** Configuration of certificate verification for TLS connection. [#31865](https://github.com/grafana/grafana/pull/31865), [@mortenaa](https://github.com/mortenaa)
- **Middleware:** Don't require HTTPS for HSTS headers to be emitted. [#35147](https://github.com/grafana/grafana/pull/35147), [@alexmv](https://github.com/alexmv)
- **News:** Reload feed when changing the time range or refreshing. [#42217](https://github.com/grafana/grafana/pull/42217), [@ashharrison90](https://github.com/ashharrison90)
- **UI/Plot:** Implement keyboard controls for plot cursor. [#42244](https://github.com/grafana/grafana/pull/42244), [@kaydelaney](https://github.com/kaydelaney)
<!-- 8.4.0-beta1 END -->
<!-- 8.3.5 START -->
# 8.3.5 (2022-02-08)
- **Security**: Fixes CVE-2022-21702. For more information, see our [blog](https://grafana.com/blog/2022/02/08/grafana-7.5.15-and-8.3.5-released-with-moderate-severity-security-fixes/)
- **Security**: Fixes CVE-2022-21703. For more information, see our [blog](https://grafana.com/blog/2022/02/08/grafana-7.5.15-and-8.3.5-released-with-moderate-severity-security-fixes/)
- **Security**: Fixes CVE-2022-21713. For more information, see our [blog](https://grafana.com/blog/2022/02/08/grafana-7.5.15-and-8.3.5-released-with-moderate-severity-security-fixes/)
<!-- 8.3.5 END -->
<!-- 8.3.4 START -->
# 8.3.4 (2022-01-17)
### Features and enhancements
- **Alerting:** Allow configuration of non-ready alertmanagers. [#43063](https://github.com/grafana/grafana/pull/43063), [@alexweav](https://github.com/alexweav)
- **Alerting:** Allow customization of Google chat message. [#43568](https://github.com/grafana/grafana/pull/43568), [@alexweav](https://github.com/alexweav)
- **Alerting:** Allow customization of Google chat message (#43568). [#43723](https://github.com/grafana/grafana/pull/43723), [@alexweav](https://github.com/alexweav)
- **AppPlugins:** Support app plugins with only default nav. [#43016](https://github.com/grafana/grafana/pull/43016), [@torkelo](https://github.com/torkelo)
- **Postgres/MySQL/MSSQL:** Cancel in-flight SQL query if user cancels query in grafana. [#43890](https://github.com/grafana/grafana/pull/43890), [@mdvictor](https://github.com/mdvictor)
- **CloudMonitoring:** Fixes broken variable queries that use group bys. [#43914](https://github.com/grafana/grafana/pull/43914), [@sunker](https://github.com/sunker)
- **Configuration:** You can now see your expired API keys if you have no active ones. [#42452](https://github.com/grafana/grafana/pull/42452), [@ashharrison90](https://github.com/ashharrison90)
- **Elasticsearch:** Fix handling multiple datalinks for a single field. [#44029](https://github.com/grafana/grafana/pull/44029), [@Elfo404](https://github.com/Elfo404)
- **Export:** Fix error being thrown when exporting dashboards using query variables that reference the default datasource. [#44034](https://github.com/grafana/grafana/pull/44034), [@ashharrison90](https://github.com/ashharrison90)
- **ImportDashboard:** Fixes issue with importing dashboard and name ending up in uid. [#43451](https://github.com/grafana/grafana/pull/43451), [@torkelo](https://github.com/torkelo)
- **Login:** Page no longer overflows on mobile. [#43739](https://github.com/grafana/grafana/pull/43739), [@ashharrison90](https://github.com/ashharrison90)
- **Plugins:** Set backend metadata property for core plugins. [#43349](https://github.com/grafana/grafana/pull/43349), [@marefr](https://github.com/marefr)
- **Prometheus:** Fill missing steps with null values. [#43622](https://github.com/grafana/grafana/pull/43622), [@ivanahuckova](https://github.com/ivanahuckova)
- **Prometheus:** Fix interpolation of $\_\_rate_interval variable. [#44035](https://github.com/grafana/grafana/pull/44035), [@ivanahuckova](https://github.com/ivanahuckova)
- **Prometheus:** Interpolate variables with curly brackets syntax. [#42927](https://github.com/grafana/grafana/pull/42927), [@ivanahuckova](https://github.com/ivanahuckova)
- **Prometheus:** Respect the http-method data source setting. [#42753](https://github.com/grafana/grafana/pull/42753), [@gabor](https://github.com/gabor)
- **Table:** Fixes issue with field config applied to wrong fields when hiding columns. [#43376](https://github.com/grafana/grafana/pull/43376), [@torkelo](https://github.com/torkelo)
- **Toolkit:** Fix bug with rootUrls not being properly parsed when signing a private plugin. [#43014](https://github.com/grafana/grafana/pull/43014), [@dessen-xu](https://github.com/dessen-xu)
- **Variables:** Fix so data source variables are added to adhoc configuration. [#43881](https://github.com/grafana/grafana/pull/43881), [@hugohaggmark](https://github.com/hugohaggmark)
### Plugin development fixes & changes
- **Toolkit:** Revert build config so tslib is bundled with plugins to prevent plugins from crashing. [#43556](https://github.com/grafana/grafana/pull/43556), [@mckn](https://github.com/mckn)
<!-- 8.3.4 END -->
<!-- 8.3.3 START -->
# 8.3.3 (2021-12-10)
### Features and enhancements
- **BarChart:** Use new data error view component to show actions in panel edit. [#42474](https://github.com/grafana/grafana/pull/42474), [@torkelo](https://github.com/torkelo)
- **CloudMonitor:** Iterate over pageToken for resources. [#42546](https://github.com/grafana/grafana/pull/42546), [@iwysiu](https://github.com/iwysiu)
- **AnnoListPanel:** Fix interpolation of variables in tags. [#42318](https://github.com/grafana/grafana/pull/42318), [@francoisdtm](https://github.com/francoisdtm)
- **CloudWatch:** Allow queries to have no dimensions specified. [#42800](https://github.com/grafana/grafana/pull/42800), [@sunker](https://github.com/sunker)
- **CloudWatch:** Fix broken queries for users migrating from 8.2.4/8.2.5 to 8.3.0. [#42611](https://github.com/grafana/grafana/pull/42611), [@sunker](https://github.com/sunker)
- **CloudWatch:** Make sure MatchExact flag gets the right value. [#42621](https://github.com/grafana/grafana/pull/42621), [@sunker](https://github.com/sunker)
- **Dashboards:** Fix so that empty folders can be deleted from the manage dashboards/folders page. [#42527](https://github.com/grafana/grafana/pull/42527), [@ashharrison90](https://github.com/ashharrison90)
- **InfluxDB:** Improve handling of metadata query errors in InfluxQL. [#42500](https://github.com/grafana/grafana/pull/42500), [@gabor](https://github.com/gabor)
- **Loki:** Fix adding of ad hoc filters for queries with parser and line_format expressions. [#42590](https://github.com/grafana/grafana/pull/42590), [@ivanahuckova](https://github.com/ivanahuckova)
- **Prometheus:** Fix running of exemplar queries for non-histogram metrics. [#42749](https://github.com/grafana/grafana/pull/42749), [@ivanahuckova](https://github.com/ivanahuckova)
- **Prometheus:** Interpolate template variables in interval. [#42637](https://github.com/grafana/grafana/pull/42637), [@ivanahuckova](https://github.com/ivanahuckova)
- **StateTimeline:** Fix toolitp not showing when for frames with multiple fields. [#42741](https://github.com/grafana/grafana/pull/42741), [@dprokop](https://github.com/dprokop)
- **TraceView:** Fix virtualized scrolling when trace view is opened in right pane in Explore. [#42480](https://github.com/grafana/grafana/pull/42480), [@autoric](https://github.com/autoric)
- **Variables:** Fix repeating panels for on time range changed variables. [#42828](https://github.com/grafana/grafana/pull/42828), [@hugohaggmark](https://github.com/hugohaggmark)
- **Variables:** Fix so queryparam option works for scoped variables. [#42742](https://github.com/grafana/grafana/pull/42742), [@hugohaggmark](https://github.com/hugohaggmark)
<!-- 8.3.3 END -->
<!-- 8.3.2 START -->
# 8.3.2 (2021-12-10)
- **Security**: Fixes CVE-2021-43813 and CVE-2021-43815. For more information, see our [blog](https://grafana.com/blog/2021/12/10/grafana-8.3.2-and-7.5.12-released-with-moderate-severity-security-fix/
<!-- 8.3.2 END -->
<!-- 8.3.1 START -->
# 8.3.1 (2021-12-07)
- **Security**: Fixes CVE-2021-43798. For more information, see our [blog](https://grafana.com/blog/2021/12/07/grafana-8.3.1-8.2.7-8.1.8-and-8.0.7-released-with-high-severity-security-fix/)
<!-- 8.3.1 END -->
<!-- 8.3.0 START -->
# 8.3.0 (2021-11-30)
### Features and enhancements
- **Alerting:** Prevent folders from being deleted when they contain alerts. [#42307](https://github.com/grafana/grafana/pull/42307), [@peterholmberg](https://github.com/peterholmberg)
- **Alerting:** Show full preview value in tooltip. [#42445](https://github.com/grafana/grafana/pull/42445), [@peterholmberg](https://github.com/peterholmberg)
- **BarGauge:** Limit title width when name is really long. [#42346](https://github.com/grafana/grafana/pull/42346), [@torkelo](https://github.com/torkelo)
- **CloudMonitoring:** Avoid to escape regexps in filters. [#41961](https://github.com/grafana/grafana/pull/41961), [@andresmgot](https://github.com/andresmgot)
- **CloudWatch:** Add support for AWS Metric Insights. [#42487](https://github.com/grafana/grafana/pull/42487), [@sunker](https://github.com/sunker)
- **TooltipPlugin:** Remove other panels' shared tooltip in edit panel. [#42187](https://github.com/grafana/grafana/pull/42187), [@mdvictor](https://github.com/mdvictor)
- **Visualizations:** Limit y label width to 40% of visualization width. [#42350](https://github.com/grafana/grafana/pull/42350), [@torkelo](https://github.com/torkelo)
- **Prometheus:** Fix range variables interpolation for time ranges smaller than 1 second. [#42242](https://github.com/grafana/grafana/pull/42242), [@ivanahuckova](https://github.com/ivanahuckova)
- **ValueMappings:** Fixes issue with regex value mapping that only sets color. [#42311](https://github.com/grafana/grafana/pull/42311), [@torkelo](https://github.com/torkelo)
- **Alerting:** Make Unified Alerting enabled by default for those who do not use legacy alerting. [#42200](https://github.com/grafana/grafana/pull/42200), [@armandgrillet](https://github.com/armandgrillet)
- **Alerting:** Support mute timings configuration through the api for the embedded alert manager. [#41533](https://github.com/grafana/grafana/pull/41533), [@JohnnyQQQQ](https://github.com/JohnnyQQQQ)
- **Docs:** Add easier to find deprecation notices to certain data sources and to the changelog. [#41938](https://github.com/grafana/grafana/pull/41938), [@gabor](https://github.com/gabor)
- **Plugins Catalog:** Enable install controls based on the pluginAdminEnabled flag. [#41686](https://github.com/grafana/grafana/pull/41686), [@leventebalogh](https://github.com/leventebalogh)
- **Query caching:** Increase max_value_mb default to 10. (Enterprise)
- **Table:** Add space between values for the DefaultCell. [#42246](https://github.com/grafana/grafana/pull/42246), [@kirederik](https://github.com/kirederik)
- **Table:** Add space between values on JSONViewCell. [#42156](https://github.com/grafana/grafana/pull/42156), [@kirederik](https://github.com/kirederik)
- **Tracing:** Make query editors available in dashboard for Tempo and Zipkin. [#41974](https://github.com/grafana/grafana/pull/41974), [@ivanahuckova](https://github.com/ivanahuckova)
- **Azure Monitor:** Add trap focus for modals in grafana/ui and other small a11y fixes for Azure Monitor. [#41449](https://github.com/grafana/grafana/pull/41449), [@sarahzinger](https://github.com/sarahzinger)
- **CodeEditor:** Prevent suggestions from being clipped. [#42120](https://github.com/grafana/grafana/pull/42120), [@kaydelaney](https://github.com/kaydelaney)
- **Datasource:** Fix stable sort order of query responses. [#41868](https://github.com/grafana/grafana/pull/41868), [@marefr](https://github.com/marefr)
- **Explore:** Fix error in query history when removing last item. [#42179](https://github.com/grafana/grafana/pull/42179), [@gabor](https://github.com/gabor)
- **Logs:** Fix requesting of older logs when flipped order. [#41966](https://github.com/grafana/grafana/pull/41966), [@ivanahuckova](https://github.com/ivanahuckova)
- **Prometheus:** Fix running of health check query based on access mode. [#42189](https://github.com/grafana/grafana/pull/42189), [@ivanahuckova](https://github.com/ivanahuckova)
- **TextPanel:** Fix suggestions for existing panels. [#42195](https://github.com/grafana/grafana/pull/42195), [@hugohaggmark](https://github.com/hugohaggmark)
- **Tracing:** Fix incorrect indentations due to reoccurring spanIDs. [#41919](https://github.com/grafana/grafana/pull/41919), [@ivanahuckova](https://github.com/ivanahuckova)
- **Tracing:** Show start time of trace with milliseconds precision. [#42132](https://github.com/grafana/grafana/pull/42132), [@ivanahuckova](https://github.com/ivanahuckova)
- **Variables:** Make renamed or missing variable section expandable. [#41964](https://github.com/grafana/grafana/pull/41964), [@hugohaggmark](https://github.com/hugohaggmark)
### Breaking changes
### Grafana 8 Alerting enabled by default for installations that do not use legacy alerting
Starting with Grafana v8.3.0, if you have **not** explicitly disabled unified alerting and **do not** have legacy alerts set up you are automatically "migrated" to Grafana 8 Alerting.
A migration **from legacy to Grafana 8 Alerting** will never incur a data loss, as the previous data is kept around for rollback purposes. However, going from **Grafana 8 Alerting to legacy alerting** will delete all the data created for Grafana 8 Alerting. It is recommended that you **backup your database** before attempting a migration between systems.
If unclear, please verify the table below:
| `[alerting][enabled]` | `[unified_alerting][enabled]` | With Existing Legacy Alerts | Result |
### Keep Last State for "If execution error or timeout" when upgrading to Grafana 8 alerting
In Grafana 8.3.0-beta2 we changed how alert rules that use `Keep Last State` for `If execution error or timeout` are upgraded from Legacy Alerting to Grafana 8 alerting. In 8.3.0-beta1 and earlier, alert rules with `Keep Last State` for `If execution error or timeout` were changed to `Alerting` when upgrading from Legacy Alerting to Grafana 8 alerting. However, in 8.3.0-beta2 these alert rules are now upgraded to a new option called `Error`. With this option, on encountering an error evaluating an alert rule, Grafana creates a special alert called `DatasourceError` with the `rule_uid` and `ref_id` as labels and an annotation called `Error` with the error message. Issue [#41869](https://github.com/grafana/grafana/issues/41869)
### Deprecations
The access mode "browser" is deprecated in the following data sources and will be removed in a later release:
- **Select:** Select menus now properly scroll during keyboard navigation. [#41917](https://github.com/grafana/grafana/pull/41917), [@ashharrison90](https://github.com/ashharrison90)
<!-- 8.3.0-beta2 END -->
<!-- 8.3.0-beta1 START -->
# 8.3.0-beta1 (2021-11-18)
### Features and enhancements
- **AccessControl:** Apply fine-grained access control to licensing. (Enterprise)
- **Alerting:** Add UI for contact point testing with custom annotations and labels. [#40491](https://github.com/grafana/grafana/pull/40491), [@nathanrodman](https://github.com/nathanrodman)
- **Alerting:** Make alert state indicator in panel header work with Grafana 8 alerts. [#38713](https://github.com/grafana/grafana/pull/38713), [@domasx2](https://github.com/domasx2)
- **Alerting:** Option for Discord notifier to use webhook name. [#40463](https://github.com/grafana/grafana/pull/40463), [@Skyebold](https://github.com/Skyebold)
- **Auth:** Omit all base64 paddings in JWT tokens for the JWT auth. [#35602](https://github.com/grafana/grafana/pull/35602), [@gillg](https://github.com/gillg)
- **Azure Monitor:** Clean up fields when editing Metrics. [#41762](https://github.com/grafana/grafana/pull/41762), [@andresmgot](https://github.com/andresmgot)
- **AzureMonitor:** Add new starter dashboards. [#39876](https://github.com/grafana/grafana/pull/39876), [@jcolladokuri](https://github.com/jcolladokuri)
- **AzureMonitor:** Add starter dashboard for app monitoring with Application Insights. [#40725](https://github.com/grafana/grafana/pull/40725), [@jcolladokuri](https://github.com/jcolladokuri)
- **Barchart/Time series:** Allow x axis label. [#41142](https://github.com/grafana/grafana/pull/41142), [@oscarkilhed](https://github.com/oscarkilhed)
- **CLI:** Improve error handling for installing plugins. [#41257](https://github.com/grafana/grafana/pull/41257), [@marefr](https://github.com/marefr)
- **CloudMonitoring:** Migrate to use backend plugin SDK contracts. [#38650](https://github.com/grafana/grafana/pull/38650), [@idafurjes](https://github.com/idafurjes)
- **CloudWatch Logs:** Add retry strategy for hitting max concurrent queries. [#39290](https://github.com/grafana/grafana/pull/39290), [@aocenas](https://github.com/aocenas)
- **CloudWatch:** Add AWS RoboMaker metrics and dimension. [#41450](https://github.com/grafana/grafana/pull/41450), [@ilyastoli](https://github.com/ilyastoli)
- **CloudWatch:** Add AWS Transfer metrics and dimension. [#41168](https://github.com/grafana/grafana/pull/41168), [@ilyastoli](https://github.com/ilyastoli)
- **Dashboard:** replace datasource name with a reference object. [#33817](https://github.com/grafana/grafana/pull/33817), [@ryantxu](https://github.com/ryantxu)
- **Dashboards:** Show logs on time series when hovering. [#40110](https://github.com/grafana/grafana/pull/40110), [@ryantxu](https://github.com/ryantxu)
- **Elasticsearch:** Add support for Elasticsearch 8.0 (Beta). [#41729](https://github.com/grafana/grafana/pull/41729), [@Elfo404](https://github.com/Elfo404)
- **Elasticsearch:** Add time zone setting to Date Histogram aggregation. [#40882](https://github.com/grafana/grafana/pull/40882), [@Elfo404](https://github.com/Elfo404)
- **Elasticsearch:** Enable full range log volume histogram. [#41202](https://github.com/grafana/grafana/pull/41202), [@ifrost](https://github.com/ifrost)
- **Elasticsearch:** Full range logs volume. [#40700](https://github.com/grafana/grafana/pull/40700), [@ifrost](https://github.com/ifrost)
- **Explore:** Allow changing the graph type. [#40522](https://github.com/grafana/grafana/pull/40522), [@gabor](https://github.com/gabor)
- **Explore:** Show ANSI colors when highlighting matched words in the logs panel. [#40971](https://github.com/grafana/grafana/pull/40971), [@oliverfrye](https://github.com/oliverfrye)
- **Graph(old) panel:** Listen to events from Time series panel. [#41033](https://github.com/grafana/grafana/pull/41033), [@zoltanbedi](https://github.com/zoltanbedi)
- **Import:** Load gcom dashboards from URL. [#41799](https://github.com/grafana/grafana/pull/41799), [@ashharrison90](https://github.com/ashharrison90)
- **LibraryPanels:** Improves export and import of library panels between orgs. [#39214](https://github.com/grafana/grafana/pull/39214), [@hugohaggmark](https://github.com/hugohaggmark)
- **OAuth:** Support PKCE. [#39948](https://github.com/grafana/grafana/pull/39948), [@sakjur](https://github.com/sakjur)
- **Panel edit:** Overrides now highlight correctly when searching. [#41684](https://github.com/grafana/grafana/pull/41684), [@ashharrison90](https://github.com/ashharrison90)
- **PanelEdit:** Display drag indicators on draggable sections. [#41711](https://github.com/grafana/grafana/pull/41711), [@ashharrison90](https://github.com/ashharrison90)
- **Prometheus:** Remove limits on metrics, labels, and values in Metrics Browser. [#40660](https://github.com/grafana/grafana/pull/40660), [@autoric](https://github.com/autoric)
- **StateTimeline:** Share cursor with rest of the panels. [#41038](https://github.com/grafana/grafana/pull/41038), [@zoltanbedi](https://github.com/zoltanbedi)
- **Tempo:** Add filtering for service graph query. [#41162](https://github.com/grafana/grafana/pull/41162), [@aocenas](https://github.com/aocenas)
- **Tempo:** Add links to nodes in Service Graph pointing to Prometheus metrics. [#41135](https://github.com/grafana/grafana/pull/41135), [@aocenas](https://github.com/aocenas)
- **Time series/Bar chart panel:** Add ability to sort series via legend. [#40226](https://github.com/grafana/grafana/pull/40226), [@zoltanbedi](https://github.com/zoltanbedi)
- **TimeSeries:** Allow multiple axes for the same unit. [#41635](https://github.com/grafana/grafana/pull/41635), [@dprokop](https://github.com/dprokop)
- **TraceView:** Allow span links defined on dataFrame. [#40563](https://github.com/grafana/grafana/pull/40563), [@aocenas](https://github.com/aocenas)
- **Transformations:** Support a rows mode in labels to fields. [#41020](https://github.com/grafana/grafana/pull/41020), [@ryantxu](https://github.com/ryantxu)
- **ValueMappings:** Don't apply field config defaults to time fields. [#41132](https://github.com/grafana/grafana/pull/41132), [@torkelo](https://github.com/torkelo)
- **Variables:** Only update panels that are impacted by variable change. [#39420](https://github.com/grafana/grafana/pull/39420), [@hugohaggmark](https://github.com/hugohaggmark)
### Bug fixes
- **API:** Fix dashboard quota limit for imports. [#41495](https://github.com/grafana/grafana/pull/41495), [@yangkb09](https://github.com/yangkb09)
- **Alerting:** Fix rule editor issues with Azure Monitor data source. [#41317](https://github.com/grafana/grafana/pull/41317), [@domasx2](https://github.com/domasx2)
- **Azure monitor:** Make sure alert rule editor is not enabled when template variables are being used. [#41335](https://github.com/grafana/grafana/pull/41335), [@sunker](https://github.com/sunker)
- **CodeEditor:** Trigger the latest getSuggestions() passed to CodeEditor. [#40544](https://github.com/grafana/grafana/pull/40544), [@DukeManh](https://github.com/DukeManh)
- **Dashboard:** Remove the current panel from the list of options in the Dashboard datasource. [#41826](https://github.com/grafana/grafana/pull/41826), [@ashharrison90](https://github.com/ashharrison90)
- **Encryption:** Fix decrypting secrets in alerting migration. [#41061](https://github.com/grafana/grafana/pull/41061), [@undef1nd](https://github.com/undef1nd)
- **InfluxDB:** Fix corner case where index is too large in ALIAS field. [#41562](https://github.com/grafana/grafana/pull/41562), [@gabor](https://github.com/gabor)
- **NavBar:** Order App plugins alphabetically. [#40078](https://github.com/grafana/grafana/pull/40078), [@ashharrison90](https://github.com/ashharrison90)
- **NodeGraph:** Fix zooming sensitivity on touchpads. [#40718](https://github.com/grafana/grafana/pull/40718), [@aocenas](https://github.com/aocenas)
- **ValueMapping:** Fixes issue with regex mappings. [#41515](https://github.com/grafana/grafana/pull/41515), [@mcdee](https://github.com/mcdee)
### Plugin development fixes & changes
- **grafana/ui:** Enable slider marks display. [#41275](https://github.com/grafana/grafana/pull/41275), [@dprokop](https://github.com/dprokop)
<!-- 8.2.7 START -->
# 8.2.7 (2021-12-07)
- **Security**: Fixes CVE-2021-43798. For more information, see our [blog](https://grafana.com/blog/2021/12/07/grafana-8.3.1-8.2.7-8.1.8-and-8.0.7-released-with-high-severity-security-fix/)
<!-- 8.2.7 END -->
<!-- 8.2.6 START -->
# 8.2.6 (2021-12-02)
### Features and enhancements
- **Security:** Upgrade Docker base image to Alpine 3.14.3. [#42061](https://github.com/grafana/grafana/pull/42061), [@dsotirakis](https://github.com/dsotirakis)
- **Security:** Upgrade Go to 1.17.2. [#42427](https://github.com/grafana/grafana/pull/42427), [@idafurjes](https://github.com/idafurjes)
- **Alerting:** Fix a bug where the metric in the evaluation string was not correctly populated. [#41731](https://github.com/grafana/grafana/pull/41731), [@JohnnyQQQQ](https://github.com/JohnnyQQQQ)
- **Alerting:** Fix no data behaviour in Legacy Alerting for alert rules using the AND operator. [#41305](https://github.com/grafana/grafana/pull/41305), [@gerobinson](https://github.com/gerobinson)
- **CloudMonitoring:** Ignore min and max aggregation in MQL queries. [#41302](https://github.com/grafana/grafana/pull/41302), [@sunker](https://github.com/sunker)
- **Dashboards:** 'Copy' is no longer added to new dashboard titles. [#41344](https://github.com/grafana/grafana/pull/41344), [@joshhunt](https://github.com/joshhunt)
- **DataProxy:** Fix overriding response body when response is a WebSocket upgrade. [#41364](https://github.com/grafana/grafana/pull/41364), [@marefr](https://github.com/marefr)
- **Elasticsearch:** Use field configured in query editor as field for date_histogram aggregations. [#41258](https://github.com/grafana/grafana/pull/41258), [@Elfo404](https://github.com/Elfo404)
- **Explore:** Fix running queries without a datasource property set. [#40805](https://github.com/grafana/grafana/pull/40805), [@Elfo404](https://github.com/Elfo404)
- **InfluxDB:** Fix numeric aliases in queries. [#41531](https://github.com/grafana/grafana/pull/41531), [@gabor](https://github.com/gabor)
- **Plugins:** Ensure consistent plugin settings list response. [#41346](https://github.com/grafana/grafana/pull/41346), [@wbrowne](https://github.com/wbrowne)
- **Tempo:** Fix validation of float durations. [#41400](https://github.com/grafana/grafana/pull/41400), [@ivanahuckova](https://github.com/ivanahuckova)
- **Tracing:** Correct tags for each span are shown. [#41473](https://github.com/grafana/grafana/pull/41473), [@ivanahuckova](https://github.com/ivanahuckova)
### Breaking changes
### Fix No Data behaviour in Legacy Alerting
In Grafana 8.2.5 and later, this change fixes a bug in the evaluation of alert rules when using the AND operator to compare two or more conditions. In Grafana 8.2.4 and earlier such alert rules would evaluate to `OK` if at least one, but not all, conditions returned no data. This change fixes that bug such that in Grafana 8.2.5 these alert rules now evaluate to `No Data`.
If an alert should evaluate to `OK` when one or all conditions return `No Data` then this can be done via changing `If no data or all values are null` to `OK`. However, this will not preserve the old behaviour in 8.2.4 where an alert will be `OK` if at least one, but not all, conditions return no data and then `No Data` if all conditions return `No Data`. Issue [#41305](https://github.com/grafana/grafana/issues/41305)
<!-- 8.2.5 END -->
<!-- 8.2.4 START -->
# 8.2.4 (2021-11-15)
- **Security**: Fixes CVE-2021-41244. For more information, see our [blog](https://grafana.com/blog/2021/11/15/grafana-8.2.4-released-with-security-fixes/)
<!-- 8.2.4 END -->
<!-- 8.2.3 START -->
# 8.2.3 (2021-11-03)
- **Security**: Fixes CVE-2021-41174. For more information, see our [blog](https://grafana.com/blog/2021/11/03/grafana-8.2.3-released-with-medium-severity-security-fix-cve-2021-41174-grafana-xss/)
<!-- 8.2.3 END -->
<!-- 8.2.2 START -->
# 8.2.2 (2021-10-21)
### Features and enhancements
- **Annotations:** We have improved tag search performance. [#40567](https://github.com/grafana/grafana/pull/40567), [@ashharrison90](https://github.com/ashharrison90)
- **Application:** You can now configure an error-template title. [#40310](https://github.com/grafana/grafana/pull/40310), [@benrubson](https://github.com/benrubson)
- **AzureMonitor:** We removed a restriction from the resource filter query. [#40690](https://github.com/grafana/grafana/pull/40690), [@andresmgot](https://github.com/andresmgot)
- **Caching:** Make cache size metric collection optional. (Enterprise)
- **Packaging:** We removed the ProcSubset option in systemd. This option prevented Grafana from starting in LXC environments. [#40339](https://github.com/grafana/grafana/pull/40339), [@kminehart](https://github.com/kminehart)
- **Prometheus:** We removed the autocomplete limit for metrics. [#39363](https://github.com/grafana/grafana/pull/39363), [@ivanahuckova](https://github.com/ivanahuckova)
- **Request interceptor:** Allow MSSQL's named instances. (Enterprise)
- **Table:** We improved the styling of the type icons to make them more distinct from column / field name. [#40596](https://github.com/grafana/grafana/pull/40596), [@torkelo](https://github.com/torkelo)
- **ValueMappings:** You can now use value mapping in stat, gauge, bar gauge, and pie chart visualizations. [#40612](https://github.com/grafana/grafana/pull/40612), [@torkelo](https://github.com/torkelo)
### Bug fixes
- **Alerting:** Fix panic when Slack's API sends unexpected response. [#40721](https://github.com/grafana/grafana/pull/40721), [@santihernandezc](https://github.com/santihernandezc)
- **Alerting:** The Create Alert button now appears on the dashboard panel when you are working with a default datasource. [#40334](https://github.com/grafana/grafana/pull/40334), [@domasx2](https://github.com/domasx2)
- **Explore:** We fixed the problem where the Explore log panel disappears when an Elasticsearch logs query returns no results. [#40217](https://github.com/grafana/grafana/pull/40217), [@Elfo404](https://github.com/Elfo404)
- **Graph:** You can now see annotation descriptions on hover. [#40581](https://github.com/grafana/grafana/pull/40581), [@axelavargas](https://github.com/axelavargas)
- **Logs:** The system now uses the JSON parser only if the line is parsed to an object. [#40507](https://github.com/grafana/grafana/pull/40507), [@ivanahuckova](https://github.com/ivanahuckova)
- **Prometheus:** We fixed the issue where the system did not reuse TCP connections when querying from Grafana alerting. [#40349](https://github.com/grafana/grafana/pull/40349), [@kminehart](https://github.com/kminehart)
- **Prometheus:** We fixed the problem that resulted in an error when a user created a query with a$\_\_intervalmin step. [#40525](https://github.com/grafana/grafana/pull/40525), [@ivanahuckova](https://github.com/ivanahuckova)
- **RowsToFields:** We fixed the issue where the system was not properly interpreting number values. [#40580](https://github.com/grafana/grafana/pull/40580), [@torkelo](https://github.com/torkelo)
- **Scale:** We fixed how the system handles NaN percent when data min = data max. [#40622](https://github.com/grafana/grafana/pull/40622), [@torkelo](https://github.com/torkelo)
- **Table panel:** You can now create a filter that includes special characters. [#40458](https://github.com/grafana/grafana/pull/40458), [@dprokop](https://github.com/dprokop)
<!-- 8.2.2 END -->
<!-- 8.2.1 START -->
# 8.2.1 (2021-10-11)
### Bug fixes
- **Dashboard:** Fix rendering of repeating panels. [#39991](https://github.com/grafana/grafana/pull/39991), [@hugohaggmark](https://github.com/hugohaggmark)
- **Datasources:** Fix deletion of data source if plugin is not found. [#40095](https://github.com/grafana/grafana/pull/40095), [@jackw](https://github.com/jackw)
- **Packaging:** Remove systemcallfilters sections from systemd unit files. [#40176](https://github.com/grafana/grafana/pull/40176), [@kminehart](https://github.com/kminehart)
- **Prometheus:** Add Headers to HTTP client options. [#40214](https://github.com/grafana/grafana/pull/40214), [@dsotirakis](https://github.com/dsotirakis)
- **Alerting:** Added support Alertmanager data source for upstream Prometheus AM implementation. [#39775](https://github.com/grafana/grafana/pull/39775), [@domasx2](https://github.com/domasx2)
- **Alerting:** Allows more characters in label names so notifications are sent. [#38629](https://github.com/grafana/grafana/pull/38629), [@gotjosh](https://github.com/gotjosh)
- **Alerting:** Get alert rules for a dashboard or a panel using /api/v1/rules endpoints. [#39476](https://github.com/grafana/grafana/pull/39476), [@gerobinson](https://github.com/gerobinson)
- **Annotations:** Improved rendering performance of event markers. [#39984](https://github.com/grafana/grafana/pull/39984), [@torkelo](https://github.com/torkelo)
- **CloudWatch Logs:** Skip caching for log queries. [#39860](https://github.com/grafana/grafana/pull/39860), [@aocenas](https://github.com/aocenas)
- **Explore:** Added an opt-in configuration for Node Graph in Jaeger, Zipkin, and Tempo. [#39958](https://github.com/grafana/grafana/pull/39958), [@connorlindsey](https://github.com/connorlindsey)
- **Packaging:** Add stricter systemd unit options. [#38109](https://github.com/grafana/grafana/pull/38109), [@erdnaxe](https://github.com/erdnaxe)
- **Prometheus:** Metrics browser can now handle label values with special characters. [#39713](https://github.com/grafana/grafana/pull/39713), [@gabor](https://github.com/gabor)
### Bug fixes
- **CodeEditor:** Ensure that we trigger the latest onSave callback provided to the component. [#39835](https://github.com/grafana/grafana/pull/39835), [@mckn](https://github.com/mckn)
- **DashboardList/AlertList:** Fix for missing All folder value. [#39772](https://github.com/grafana/grafana/pull/39772), [@hugohaggmark](https://github.com/hugohaggmark)
### Breaking changes
#### Potential failure to start in Ubuntu 18.04 / Debian 9 / CentOS
- In Grafana v8.2.0, this change can prevent the `grafana-server` service from starting on older versions of systemd, present on Ubuntu 18.04 and slightly older versions of Debian. If running one of those versions, please wait until v8.2.1 is released before upgrading. If you still want to upgrade or have already ugpraded, a simple fix is available here: https://github.com/grafana/grafana/issues/40162#issuecomment-938060240 Issue [#38109](https://github.com/grafana/grafana/issues/38109)
### Plugin development fixes & changes
- **Plugins:** Create a mock icon component to prevent console errors. [#39901](https://github.com/grafana/grafana/pull/39901), [@jackw](https://github.com/jackw)
<!-- 8.2.0 END -->
<!-- 8.2.0-beta2 START -->
# 8.2.0-beta2 (2021-09-30)
### Features and enhancements
- **AccessControl:** Document new permissions restricting data source access. [#39091](https://github.com/grafana/grafana/pull/39091), [@gamab](https://github.com/gamab)
- **TimePicker:** Add fiscal years and search to time picker. [#39073](https://github.com/grafana/grafana/pull/39073), [@oscarkilhed](https://github.com/oscarkilhed)
- **Alerting:** Added support for Unified Alerting with Grafana HA. [#37920](https://github.com/grafana/grafana/pull/37920), [@gotjosh](https://github.com/gotjosh)
- **Alerting:** Added support for tune rule evaluation using configuration options. [#35623](https://github.com/grafana/grafana/pull/35623), [@papagian](https://github.com/papagian)
- **Alerting:** Cleanups alertmanager namespace from key-value store when disabling Grafana 8 alerts. [#39554](https://github.com/grafana/grafana/pull/39554), [@papagian](https://github.com/papagian)
- **Alerting:** Remove `ngalert` feature toggle and introduce two new settings for enabling Grafana 8 alerts and disabling them for specific organisations. [#38746](https://github.com/grafana/grafana/pull/38746), [@papagian](https://github.com/papagian)
- **CloudWatch:** Introduced new math expression where it is necessary to specify the period field. [#39458](https://github.com/grafana/grafana/pull/39458), [@sunker](https://github.com/sunker)
- **InfluxDB:** Added support for $\_\_interval and $\_\_interval_ms in Flux queries for alerting. [#38889](https://github.com/grafana/grafana/pull/38889), [@gabor](https://github.com/gabor)
- **InfluxDB:** Flux queries can use more precise start and end timestamps with nanosecond-precision. [#39415](https://github.com/grafana/grafana/pull/39415), [@gabor](https://github.com/gabor)
- **Plugins Catalog:** Make the catalog the default way to interact with plugins. [#39779](https://github.com/grafana/grafana/pull/39779), [@leventebalogh](https://github.com/leventebalogh)
- **Prometheus:** Removed autocomplete limit for metrics. [#39363](https://github.com/grafana/grafana/pull/39363), [@ivanahuckova](https://github.com/ivanahuckova)
### Bug fixes
- **Alerting:** Fixed an issue where the edit page crashes if you tried to preview an alert without a condition set. [#39659](https://github.com/grafana/grafana/pull/39659), [@peterholmberg](https://github.com/peterholmberg)
- **Alerting:** Fixed the silence file content generated during migration. [#39557](https://github.com/grafana/grafana/pull/39557), [@papagian](https://github.com/papagian)
- **Analytics:** Fixed an issue related to interaction event propagation in Azure Application Insights. [#39752](https://github.com/grafana/grafana/pull/39752), [@sunker](https://github.com/sunker)
- **BarGauge:** Fixed an issue where the cell color was lit even though there was no data. [#39574](https://github.com/grafana/grafana/pull/39574), [@ashharrison90](https://github.com/ashharrison90)
- **BarGauge:** Improved handling of streaming data. [#39737](https://github.com/grafana/grafana/pull/39737), [@ashharrison90](https://github.com/ashharrison90)
- **Dashboard:** Add option to generate short URL for variables with values containing spaces. [#39552](https://github.com/grafana/grafana/pull/39552), [@hugohaggmark](https://github.com/hugohaggmark)
- Fixed an issue that produced State timeline panel tooltip error when data was not in sync. [#39438](https://github.com/grafana/grafana/pull/39438), [@zoltanbedi](https://github.com/zoltanbedi)
- **InfluxDB:** InfluxQL query editor is set to always use resultFormat. [#39330](https://github.com/grafana/grafana/pull/39330), [@gabor](https://github.com/gabor)
- **Loki:** Fixed creating context query for logs with parsed labels. [#39648](https://github.com/grafana/grafana/pull/39648), [@ivanahuckova](https://github.com/ivanahuckova)
- **PageToolbar:** Fixed alignment of titles. [#39572](https://github.com/grafana/grafana/pull/39572), [@ashharrison90](https://github.com/ashharrison90)
- **Plugins Catalog:** Update to the list of available panels after an install, update or uninstall. [#39293](https://github.com/grafana/grafana/pull/39293), [@leventebalogh](https://github.com/leventebalogh)
- **TimeSeries:** Fixed an issue where the shared cursor was not showing when hovering over in old Graph panel. [#39738](https://github.com/grafana/grafana/pull/39738), [@zoltanbedi](https://github.com/zoltanbedi)
- **Variables:** Fixed issues related to change of focus or refresh pages when pressing enter in a text box variable input. [#39666](https://github.com/grafana/grafana/pull/39666), [@hugohaggmark](https://github.com/hugohaggmark)
- **Variables:** Panel no longer crash when using the adhoc variable in data links. [#39546](https://github.com/grafana/grafana/pull/39546), [@hugohaggmark](https://github.com/hugohaggmark)
### Breaking changes
Grafana v8.2.0-beta1 caused data loss for users having enabled `ngalert` in 8.0.x - 8.1.x and created alerts using the new alerting system. This issue is now fixed except if the deployment has multiple organizations and the feature flag was enabled in the previous version (8.0.x - 8.1.x).
In this scenario (upgrade from 8.0.x - 8.1.x with multiple organizations and `ngalert` enabled to 8.2.0-beta2), the migration will assign existing notification policies and contact points to the first organization and then apply the default alertmanager configuration to all organizations. This will effectively reset notification policies for _all_ organizations. Issue [#39541](https://github.com/grafana/grafana/issues/39541)
### Deprecations
`ngalert` feature toggle it has been deprecated it will be removed in a future release. To enable Grafana 8 alerts, modify your configuration and:
- in the `unified_alerting` section set the `enabled` property to `true`
- in the `alerting` section set the `enabled` property to `false` Issue [#38746](https://github.com/grafana/grafana/issues/38746)
<!-- 8.2.0-beta2 END -->
<!-- 8.2.0-beta1 START -->
# 8.2.0-beta1 (2021-09-16)
### Features and enhancements
- **AccessControl:** Introduce new permissions to restrict access for reloading provisioning configuration. [#38906](https://github.com/grafana/grafana/pull/38906), [@vtorosyan](https://github.com/vtorosyan)
- **Admin:** Update license page UI. (Enterprise)
- **Alerting:** Add UI to edit Cortex/Loki namespace, group names, and group evaluation interval. [#38543](https://github.com/grafana/grafana/pull/38543), [@domasx2](https://github.com/domasx2)
- **Alerting:** Add a Test button to test contact point. [#37475](https://github.com/grafana/grafana/pull/37475), [@domasx2](https://github.com/domasx2)
- **Alerting:** Allow creating/editing recording rules for Loki and Cortex. [#38064](https://github.com/grafana/grafana/pull/38064), [@domasx2](https://github.com/domasx2)
- **Alerting:** Metrics should have the label `org` instead of `user`. [#39353](https://github.com/grafana/grafana/pull/39353), [@gotjosh](https://github.com/gotjosh)
- **Alerting:** Sort notification channels by name to make them easier to locate. [#37426](https://github.com/grafana/grafana/pull/37426), [@jstangroome](https://github.com/jstangroome)
- **Alerting:** Support org level isolation of notification configuration. [#37414](https://github.com/grafana/grafana/pull/37414), [@papagian](https://github.com/papagian)
- **AzureMonitor:** Add data links to deep link to Azure Portal Azure Resource Graph. [#35591](https://github.com/grafana/grafana/pull/35591), [@shuotli](https://github.com/shuotli)
- **AzureMonitor:** Add support for annotations from Azure Monitor Metrics and Azure Resource Graph services. [#37633](https://github.com/grafana/grafana/pull/37633), [@joshhunt](https://github.com/joshhunt)
- **AzureMonitor:** Show error message when subscriptions request fails in ConfigEditor. [#37837](https://github.com/grafana/grafana/pull/37837), [@joshhunt](https://github.com/joshhunt)
- **Chore:** Update to Golang 1.16.7. [#38604](https://github.com/grafana/grafana/pull/38604), [@dsotirakis](https://github.com/dsotirakis)
- **CloudWatch Logs:** Add link to X-Ray data source for trace IDs in logs. [#39135](https://github.com/grafana/grafana/pull/39135), [@aocenas](https://github.com/aocenas)
- **CloudWatch/Logs:** Don't group dataframes for non time series queries. [#37998](https://github.com/grafana/grafana/pull/37998), [@aocenas](https://github.com/aocenas)
- **Cloudwatch:** Migrate queries that use multiple stats to one query per stat. [#36925](https://github.com/grafana/grafana/pull/36925), [@sunker](https://github.com/sunker)
- **Dashboard:** Keep live timeseries moving left (v2). [#37769](https://github.com/grafana/grafana/pull/37769), [@ryantxu](https://github.com/ryantxu)
- **Datasources:** Introduce `response_limit` for datasource responses. [#38962](https://github.com/grafana/grafana/pull/38962), [@dsotirakis](https://github.com/dsotirakis)
- **Explore:** Add filter by trace or span ID to `trace to logs` feature. [#38943](https://github.com/grafana/grafana/pull/38943), [@connorlindsey](https://github.com/connorlindsey)
- **Explore:** Download traces as JSON in Explore Inspector. [#38614](https://github.com/grafana/grafana/pull/38614), [@connorlindsey](https://github.com/connorlindsey)
- **Explore:** Support custom display label for derived fields buttons for Loki datasource. [#37273](https://github.com/grafana/grafana/pull/37273), [@connorlindsey](https://github.com/connorlindsey)
- **Jaeger:** Add ability to upload JSON file for trace data. [#37205](https://github.com/grafana/grafana/pull/37205), [@zoltanbedi](https://github.com/zoltanbedi)
- **LibraryElements:** Enable specifying UID for new and existing library elements. [#39019](https://github.com/grafana/grafana/pull/39019), [@hugohaggmark](https://github.com/hugohaggmark)
- **LibraryPanels:** Remove library panel icon from the panel header so you can no longer tell that a panel is a library panel from the dashboard view. [#38749](https://github.com/grafana/grafana/pull/38749), [@hugohaggmark](https://github.com/hugohaggmark)
- **Logs panel:** Scroll to the bottom on page refresh when sorting in ascending order. [#37634](https://github.com/grafana/grafana/pull/37634), [@ivanahuckova](https://github.com/ivanahuckova)
- **Loki:** Add fuzzy search to label browser. [#36864](https://github.com/grafana/grafana/pull/36864), [@connorlindsey](https://github.com/connorlindsey)
- **Navigation:** Implement active state for items in the Sidemenu. [#39030](https://github.com/grafana/grafana/pull/39030), [@ashharrison90](https://github.com/ashharrison90)
- **Packaging:** Add stricter systemd unit options. [#38109](https://github.com/grafana/grafana/pull/38109), [@erdnaxe](https://github.com/erdnaxe)
- **Packaging:** Update PID file location from `/var/run` to `/run`. [#35739](https://github.com/grafana/grafana/pull/35739), [@MichaIng](https://github.com/MichaIng)
- **Postgres/MySQL/MSSQL:** Add setting to limit the maximum number of rows processed. [#38986](https://github.com/grafana/grafana/pull/38986), [@marefr](https://github.com/marefr)
- **Prometheus:** Add interpolation for built-in-time variables to backend. [#39051](https://github.com/grafana/grafana/pull/39051), [@ivanahuckova](https://github.com/ivanahuckova)
- **Recorded Queries:** Finish rest API endpoints. (Enterprise)
- **Reporting:** enable creating reports from dashboard. (Enterprise)
- **Tempo:** Add ability to upload trace data in JSON format. [#37407](https://github.com/grafana/grafana/pull/37407), [@zoltanbedi](https://github.com/zoltanbedi)
- **TimeSeries/XYChart:** Allow grid lines visibility control in XYChart and TimeSeries panels. [#38502](https://github.com/grafana/grafana/pull/38502), [@dprokop](https://github.com/dprokop)
- **Transformations:** Convert field types to time string number or boolean. [#38517](https://github.com/grafana/grafana/pull/38517), [@nikki-kiga](https://github.com/nikki-kiga)
- **Usage Insights:** Support writing events to Grafana's log. (Enterprise)
- **Value mappings:** Add regular-expression based value mapping. [#38931](https://github.com/grafana/grafana/pull/38931), [@mcdee](https://github.com/mcdee)
- **Zipkin:** Add ability to upload trace JSON. [#37483](https://github.com/grafana/grafana/pull/37483), [@zoltanbedi](https://github.com/zoltanbedi)
### Bug fixes
- **Admin:** Prevent user from deleting user's current/active organization. [#38056](https://github.com/grafana/grafana/pull/38056), [@idafurjes](https://github.com/idafurjes)
- **LibraryPanels:** Fix library panel getting saved in the dashboard's folder. [#38978](https://github.com/grafana/grafana/pull/38978), [@hugohaggmark](https://github.com/hugohaggmark)
- **OAuth:** Make generic teams URL and JMES path configurable. [#37233](https://github.com/grafana/grafana/pull/37233), [@djairhogeuens](https://github.com/djairhogeuens)
- **Thresholds:** Fix undefined color in "Add threshold". [#39113](https://github.com/grafana/grafana/pull/39113), [@glintik](https://github.com/glintik)
- **Timeseries:** Add wide-to-long, and fix multi-frame output. [#38670](https://github.com/grafana/grafana/pull/38670), [@ryantxu](https://github.com/ryantxu)
- **TooltipPlugin:** Fix behavior of Shared Crosshair when Tooltip is set to All. [#37285](https://github.com/grafana/grafana/pull/37285), [@nikki-kiga](https://github.com/nikki-kiga)
### Breaking changes
The `monaco-editor` dependency in `grafana-ui` has been updated to a newer version (`0.27.0`), which is not completely backward compatible with the old version (`0.21.2`). The backward incompatible changes are fairly small, but they do exist, so if your code accesses the raw monaco-objects through the `grafana-ui` package, please check the [monaco-editor changelog](https://github.com/microsoft/monaco-editor/blob/main/CHANGELOG.md) and apply any necessary changes. Issue [#39027](https://github.com/grafana/grafana/issues/39027)
The mandatory `css` prop in `grafana/ui` components has been removed.
Previous versions of `grafana/ui` components were typed incorrectly due to a dependency mismatch between emotion 10 and 11 causing a `css` prop to be added to components that extended react types.
### Unified Alerting (Grafana 8 Alerting) data loss
Grafana v8.2 fixed an issue with org isolation for notification configuration but to fix this Grafana will now re-run the migration from old alerting and this will cause complete removal of all new alert rules and notification configurations. This data loss is not something we find acceptable and are working on ways to mitigate it. So in the meantime, if you are an early adopter of unified alerting please wait with trying v8.2 beta.
Panel queries and/or annotation queries that used more than one statistic will be converted into one query/annotation per statistic. In case an alerting rule was based on a query row that had more than one statistic, it would now be based only on the first statistic for that query row. New alerting rules will not be created for migrated queries. Please note that in most cases it would not make sense to have an alerting rule that is based on multiple statistics anyway. Issue [#36925](https://github.com/grafana/grafana/issues/36925)
### Deprecations
`getHighlighterExpressions` in datasource APIs ( used to highlight logs while editing queries) has been deprecated and will be removed in a future release.
# Deprecation notice
`ExploreQueryFieldProps` interface for query editors has been deprecated and will be removed in a future release. Use `QueryEditorProps` instead. Issue [#38942](https://github.com/grafana/grafana/issues/38942)
### Plugin development fixes & changes
- **Grafana UI:** Fix TS error property `css` is missing in type. [#38078](https://github.com/grafana/grafana/pull/38078), [@jackw](https://github.com/jackw)
<!-- 8.2.0-beta1 END -->
<!-- 8.1.8 START -->
# 8.1.8 (2021-12-07)
- **Security**: Fixes CVE-2021-43798. For more information, see our [blog](https://grafana.com/blog/2021/12/07/grafana-8.3.1-8.2.7-8.1.8-and-8.0.7-released-with-high-severity-security-fix/)
<!-- 8.1.8 END -->
<!-- 8.1.7 START -->
# 8.1.7 (2021-10-06)
### Bug fixes
- **Alerting:** Fix alerts with evaluation interval more than 30 seconds resolving before notification. [#39513](https://github.com/grafana/grafana/pull/39513), [@gerobinson](https://github.com/gerobinson)
- **Elasticsearch/Prometheus:** Fix usage of proper SigV4 service namespace. [#39439](https://github.com/grafana/grafana/pull/39439), [@marefr](https://github.com/marefr)
<!-- 8.1.7 END -->
<!-- 8.1.6 START -->
# 8.1.6 (2021-10-05)
- **Security**: Fixes CVE-2021-39226. For more information, see our [blog](https://grafana.com/blog/2021/10/05/grafana-7.5.11-and-8.1.6-released-with-critical-security-fix/)
<!-- 8.1.6 END -->
<!-- 8.1.5 START -->
# 8.1.5 (2021-09-21)
### Bug fixes
- **BarChart:** Fixes panel error that happens on second refresh. [#39304](https://github.com/grafana/grafana/pull/39304), [@DanCech](https://github.com/DanCech)
<!-- 8.1.5 END -->
<!-- 8.1.4 START -->
# 8.1.4 (2021-09-16)
### Features and enhancements
- **Explore:** Ensure logs volume bar colors match legend colors. [#39072](https://github.com/grafana/grafana/pull/39072), [@ifrost](https://github.com/ifrost)
- **LDAP:** Search all DNs for users. [#38891](https://github.com/grafana/grafana/pull/38891), [@sakjur](https://github.com/sakjur)
- **Annotations:** Fix blank panels for queries with unknown data sources. [#39017](https://github.com/grafana/grafana/pull/39017), [@hugohaggmark](https://github.com/hugohaggmark)
- **BarChart:** Fix stale values and x axis labels. [#39188](https://github.com/grafana/grafana/pull/39188), [@leeoniya](https://github.com/leeoniya)
- **Graph:** Make old graph panel thresholds work even if ngalert is enabled. [#38918](https://github.com/grafana/grafana/pull/38918), [@domasx2](https://github.com/domasx2)
- **InfluxDB:** Fix regex to identify `/` as separator. [#39185](https://github.com/grafana/grafana/pull/39185), [@dsotirakis](https://github.com/dsotirakis)
- **LibraryPanels:** Fix update issues related to library panels in rows. [#38963](https://github.com/grafana/grafana/pull/38963), [@hugohaggmark](https://github.com/hugohaggmark)
- **Variables:** Fix variables not updating inside a Panel when the preceding Row uses "Repeat For". [#38935](https://github.com/grafana/grafana/pull/38935), [@axelavargas](https://github.com/axelavargas)
<!-- 8.1.4 END -->
<!-- 8.1.3 START -->
# 8.1.3 (2021-09-08)
@@ -18,6 +714,8 @@
- **Plugins:** Track signed files + add warn log for plugin assets which are not signed. [#38938](https://github.com/grafana/grafana/pull/38938), [@wbrowne](https://github.com/wbrowne)
- **Postgres/MySQL/MSSQL:** Fix region annotations not displayed correctly. [#38936](https://github.com/grafana/grafana/pull/38936), [@marefr](https://github.com/marefr)
- **Prometheus:** Fix validate selector in metrics browser. [#38921](https://github.com/grafana/grafana/pull/38921), [@ivanahuckova](https://github.com/ivanahuckova)
- **Security:** Fix stylesheet injection vulnerability [#38432](https://github.com/grafana/grafana/pull/38432), [@idafurjes](https://github.com/idafurjes). Big thanks to Tobias Hamann and Lauritz Holtmann of usd AG for reporting this issue.
- **Security:** Fix short URL vulnerability [#38436](https://github.com/grafana/grafana/pull/38436), [@idafurjes](https://github.com/idafurjes). Big thanks to Tobias Hamann and Lauritz Holtmann of usd AG for reporting this issue.
<!-- 8.1.3 END -->
<!-- 8.1.2 START -->
@@ -62,7 +760,7 @@
### Bug fixes
- **CloudWatch Logs:** Fix crash when no region is selected. [#37639](https://github.com/grafana/grafana/pull/37639), [@aocenas](https://github.com/aocenas)
- **Reporting:** Fix timezone parsing for scheduler (enterprise)
- **Reporting:** Fix timezone parsing for scheduler. (Enterprise)
<!-- 8.1.1 END -->
<!-- 8.1.0 START -->
@@ -73,7 +771,9 @@
- **Alerting:** Deduplicate receivers during migration. [#36812](https://github.com/grafana/grafana/pull/36812), [@codesome](https://github.com/codesome)
- **ColorPicker:** Display colors as RGBA. [#37231](https://github.com/grafana/grafana/pull/37231), [@nikki-kiga](https://github.com/nikki-kiga)
- **Encryption:** Add support for multiple encryption algorithms (aes-gcm). (Enterprise)
- **Select:** Make portalling the menu opt-in, but opt-in _everywhere_. [#37501](https://github.com/grafana/grafana/pull/37501), [@ashharrison90](https://github.com/ashharrison90)
- **TeamSync:** Batch team synchronization. (Enterprise)
- **Prometheus:** Update PromQL typeahead and highlighting. [#36730](https://github.com/grafana/grafana/pull/36730), [@ekpdt](https://github.com/ekpdt)
- **Prometheus:** interpolate variable for step field. [#36437](https://github.com/grafana/grafana/pull/36437), [@zoltanbedi](https://github.com/zoltanbedi)
- **Provisioning:** Improve validation by validating across all dashboard providers. [#26742](https://github.com/grafana/grafana/pull/26742), [@nabokihms](https://github.com/nabokihms)
- **Query cache:** Adding an encryption option for caching. (Enterprise)
- **Reporting:** Use start and end dates for scheduling. (Enterprise)
- **SQL Datasources:** Allow multiple string/labels columns with time series. [#36485](https://github.com/grafana/grafana/pull/36485), [@kylebrandt](https://github.com/kylebrandt)
- **Select:** Portal select menu to document.body. [#36398](https://github.com/grafana/grafana/pull/36398), [@ashharrison90](https://github.com/ashharrison90)
- **Team Sync:** Add group mapping to support team sync in the Generic OAuth provider. [#36307](https://github.com/grafana/grafana/pull/36307), [@wardbekker](https://github.com/wardbekker)
- **Security**: Fixes CVE-2021-43798. For more information, see our [blog](https://grafana.com/blog/2021/12/07/grafana-8.3.1-8.2.7-8.1.8-and-8.0.7-released-with-high-severity-security-fix/)
<!-- 8.0.7 END -->
<!-- 8.0.6 START -->
# 8.0.6 (2021-07-14)
@@ -408,7 +1118,7 @@ The following endpoints were deprecated for Grafana v5.0 and support for them ha
- **AzureMonitor:** Support querying subscriptions and resource groups in Azure Monitor Logs. [#34766](https://github.com/grafana/grafana/pull/34766), [@joshhunt](https://github.com/joshhunt)
- **AzureMonitor:** remove requirement for default subscription. [#34787](https://github.com/grafana/grafana/pull/34787), [@kostrse](https://github.com/kostrse)
- **ConfirmModal:** Auto focus delete button. [#34917](https://github.com/grafana/grafana/pull/34917), [@torkelo](https://github.com/torkelo)
- **Explore:** Add caching for queries that are run from logs navigation. [#34297](https://github.com/grafana/grafana/pull/34297), [@ivanahuckova](https://github.com/ivanahuckova)
- **Loki:** Add formatting for annotations. [#34774](https://github.com/grafana/grafana/pull/34774), [@fredr](https://github.com/fredr)
@@ -417,6 +1127,8 @@ The following endpoints were deprecated for Grafana v5.0 and support for them ha
- **Overrides:** Include a manual override option to hide something from visualization. [#34783](https://github.com/grafana/grafana/pull/34783), [@torkelo](https://github.com/torkelo)
- **PieChart:** Support row data in pie charts. [#34755](https://github.com/grafana/grafana/pull/34755), [@torkelo](https://github.com/torkelo)
- **Prometheus:** Update default HTTP method to POST for existing data sources. [#34599](https://github.com/grafana/grafana/pull/34599), [@ivanahuckova](https://github.com/ivanahuckova)
- **Reporting:** Enable generating PDF for anonymous users. (Enterprise)
- **SAML:** Make private key and certificate optional. (Enterprise)
- **Time series panel:** Position tooltip correctly when window is scrolled or resized. [#34782](https://github.com/grafana/grafana/pull/34782), [@dprokop](https://github.com/dprokop)
- **AGPL License:** Update license from Apache 2.0 to the GNU Affero General Public License (AGPL). [#33184](https://github.com/grafana/grafana/pull/33184)
<!-- 8.0.0-beta1 END -->
<!-- 7.5.15 START -->
# 7.5.15 (2022-02-08)
- **Security**: Fixes CVE-2022-21702. For more information, see our [blog](https://grafana.com/blog/2022/02/08/grafana-7.5.15-and-8.3.5-released-with-moderate-severity-security-fixes/)
- **Security**: Fixes CVE-2022-21703. For more information, see our [blog](https://grafana.com/blog/2022/02/08/grafana-7.5.15-and-8.3.5-released-with-moderate-severity-security-fixes/)
- **Security**: Fixes CVE-2022-21713. For more information, see our [blog](https://grafana.com/blog/2022/02/08/grafana-7.5.15-and-8.3.5-released-with-moderate-severity-security-fixes/)
<!-- 7.5.15 END -->
<!-- 7.5.13 START -->
# 7.5.13 (2022-01-18)
### Bug fixes
- **[v7.5.x] Alerting:** Fix NoDataFound for alert rules using AND operator (#41305). [#44066](https://github.com/grafana/grafana/pull/44066), [@armandgrillet](https://github.com/armandgrillet)
<!-- 7.5.13 END -->
<!-- 7.5.11 START -->
# 7.5.11 (2021-10-05)
- **Security**: Fixes CVE-2021-39226. For more information, see our [blog](https://grafana.com/blog/2021/10/05/grafana-7.5.11-and-8.1.6-released-with-critical-security-fix/)
- **AzureMonitor**: Add support for Microsoft.AppConfiguration/configurationStores namespace. [#32123](https://github.com/grafana/grafana/pull/32123), [@deesejohn](https://github.com/deesejohn)
- **TablePanel**: Make sorting case-insensitive. [#32435](https://github.com/grafana/grafana/pull/32435), [@kaydelaney](https://github.com/kaydelaney)
- **Auditing:** Use nanosecond resolution for audit log timestamps. (Enterprise)
- **AzureMonitor:** Add support for Microsoft.AppConfiguration/configurationStores namespace. [#32123](https://github.com/grafana/grafana/pull/32123), [@deesejohn](https://github.com/deesejohn)
- **TablePanel:** Make sorting case-insensitive. [#32435](https://github.com/grafana/grafana/pull/32435), [@kaydelaney](https://github.com/kaydelaney)
### Bug fixes
- **AzureMonitor**: Add support for Virtual WAN namespaces. [#32935](https://github.com/grafana/grafana/pull/32935), [@joshhunt](https://github.com/joshhunt)
- **Bugfix**: Add proper padding when scrolling is added to bar gauge. [#32411](https://github.com/grafana/grafana/pull/32411), [@mckn](https://github.com/mckn)
- **Datasource**: Prevent default data source named "default" from causing infinite loop. [#32949](https://github.com/grafana/grafana/pull/32949), [@jackw](https://github.com/jackw)
- **Prometheus**: Allow query_exemplars endpoint in data source proxy. [#32802](https://github.com/grafana/grafana/pull/32802), [@zoltanbedi](https://github.com/zoltanbedi)
- **Table**: Fix table data links so they refer to correct row after sorting. [#32571](https://github.com/grafana/grafana/pull/32571), [@torkelo](https://github.com/torkelo)
- **AzureMonitor:** Add support for Virtual WAN namespaces. [#32935](https://github.com/grafana/grafana/pull/32935), [@joshhunt](https://github.com/joshhunt)
- **Bugfix:** Add proper padding when scrolling is added to bar gauge. [#32411](https://github.com/grafana/grafana/pull/32411), [@mckn](https://github.com/mckn)
- **Datasource:** Prevent default data source named "default" from causing infinite loop. [#32949](https://github.com/grafana/grafana/pull/32949), [@jackw](https://github.com/jackw)
- **Prometheus:** Allow exemplars endpoint in data source proxy. [#32802](https://github.com/grafana/grafana/pull/32802), [@zoltanbedi](https://github.com/zoltanbedi)
- **Table:** Fix table data links so they refer to correct row after sorting. [#32571](https://github.com/grafana/grafana/pull/32571), [@torkelo](https://github.com/torkelo)
- **Security**: Urgent security patch release. Please read more in our [blog](https://grafana.com/blog/2019/08/29/grafana-5.4.5-and-6.3.4-released-with-important-security-fix/)
@@ -180,7 +179,7 @@ See [security announcement](https://community.grafana.com/t/grafana-5-3-3-and-4-
- **Alerting**: Link to view full size image in Microsoft Teams alert notifier [#13121](https://github.com/grafana/grafana/issues/13121), thx [@holiiveira](https://github.com/holiiveira)
- **Alerting**: Fixes a bug where all alerts would send reminders after upgrade & restart [#13402](https://github.com/grafana/grafana/pull/13402)
- **Alerting**: Concurrent render limit for graphs used in notifications [#13401](https://github.com/grafana/grafana/pull/13401)
- **Postgres/MySQL/MSSQL**: Add support for replacing $__interval and $\_\_interval_ms in alert queries [#11555](https://github.com/grafana/grafana/issues/11555), thx [@svenklemm](https://github.com/svenklemm)
- **Postgres/MySQL/MSSQL**: Add support for replacing $\_\_interval and $\_\_interval_ms in alert queries [#11555](https://github.com/grafana/grafana/issues/11555), thx [@svenklemm](https://github.com/svenklemm)
# 5.3.0-beta1 (2018-09-06)
@@ -214,18 +213,18 @@ See [security announcement](https://community.grafana.com/t/grafana-5-3-3-and-4-
- **Prometheus**: Fix graph panel bar width issue in aligned prometheus queries [#12379](https://github.com/grafana/grafana/issues/12379)
- **Prometheus**: Heatmap - fix unhandled error when some points are missing [#12484](https://github.com/grafana/grafana/issues/12484)
- **Prometheus**: Add $__interval, $**interval_ms, \$**range, $__range_s & $\_\_range_ms support for dashboard and template queries [#12597](https://github.com/grafana/grafana/issues/12597) [#12882](https://github.com/grafana/grafana/issues/12882), thx [@roidelapluie](https://github.com/roidelapluie)
- **Prometheus**: Add $**interval, $**interval_ms, \$**range, $**range_s & $\_\_range_ms support for dashboard and template queries [#12597](https://github.com/grafana/grafana/issues/12597) [#12882](https://github.com/grafana/grafana/issues/12882), thx [@roidelapluie](https://github.com/roidelapluie)
- **Elasticsearch**: For alerting/backend, support having index name to the right of pattern in index pattern [#12731](https://github.com/grafana/grafana/issues/12731)
- **Graphite**: Fix for quoting of int function parameters (when using variables) [#11927](https://github.com/grafana/grafana/pull/11927)
- **InfluxDB**: Support timeFilter in query templating for InfluxDB [#12598](https://github.com/grafana/grafana/pull/12598), thx [kichristensen](https://github.com/kichristensen)
- **Postgres/MySQL/MSSQL**: New $__unixEpochGroup and $\_\_unixEpochGroupAlias macros [#12892](https://github.com/grafana/grafana/issues/12892), thx [@svenklemm](https://github.com/svenklemm)
- **Postgres/MySQL/MSSQL**: New $\_\_unixEpochGroup and $\_\_unixEpochGroupAlias macros [#12892](https://github.com/grafana/grafana/issues/12892), thx [@svenklemm](https://github.com/svenklemm)
- **Postgres/MySQL/MSSQL**: Add previous fill mode to \$\_\_timeGroup macro which will fill in previously seen value when point is missing [#12756](https://github.com/grafana/grafana/issues/12756), thx [@svenklemm](https://github.com/svenklemm)
- **Postgres/MySQL/MSSQL**: Use floor rounding in \$\_\_timeGroup macro function [#12460](https://github.com/grafana/grafana/issues/12460), thx [@svenklemm](https://github.com/svenklemm)
- **Postgres/MySQL/MSSQL**: Use metric column as prefix when returning multiple value columns [#12727](https://github.com/grafana/grafana/issues/12727), thx [@svenklemm](https://github.com/svenklemm)
- **Postgres/MySQL/MSSQL**: New $__timeGroupAlias macro. Postgres $\_\_timeGroup no longer automatically adds time column alias [#12749](https://github.com/grafana/grafana/issues/12749), thx [@svenklemm](https://github.com/svenklemm)
- **Postgres/MySQL/MSSQL**: New $\_\_timeGroupAlias macro. Postgres $\_\_timeGroup no longer automatically adds time column alias [#12749](https://github.com/grafana/grafana/issues/12749), thx [@svenklemm](https://github.com/svenklemm)
- **Postgres/MySQL/MSSQL**: Escape single quotes in variables [#12785](https://github.com/grafana/grafana/issues/12785), thx [@eMerzh](https://github.com/eMerzh)
- **Postgres/MySQL/MSSQL**: Min time interval support [#13157](https://github.com/grafana/grafana/issues/13157), thx [@svenklemm](https://github.com/svenklemm)
- **MySQL/MSSQL**: Use datetime format instead of epoch for $__timeFilter, $**timeFrom and \$**timeTo macros [#11618](https://github.com/grafana/grafana/issues/11618) [#11619](https://github.com/grafana/grafana/issues/11619), thx [@AustinWinstanley](https://github.com/AustinWinstanley)
- **MySQL/MSSQL**: Use datetime format instead of epoch for $\_\_timeFilter, $**timeFrom and \$**timeTo macros [#11618](https://github.com/grafana/grafana/issues/11618) [#11619](https://github.com/grafana/grafana/issues/11619), thx [@AustinWinstanley](https://github.com/AustinWinstanley)
- **Templating**: Make $__interval and $\_\_interval_ms global built in variables that can be used in by any data source (in panel queries), closes [#7190](https://github.com/grafana/grafana/issues/7190), closes [#6582](https://github.com/grafana/grafana/issues/6582)
- **Templating**: Make $\_\_interval and $\_\_interval_ms global built in variables that can be used in by any data source (in panel queries), closes [#7190](https://github.com/grafana/grafana/issues/7190), closes [#6582](https://github.com/grafana/grafana/issues/6582)
- **S3 Image Store**: External s3 image store (used in alert notifications) now support AWS IAM Roles, closes [#6985](https://github.com/grafana/grafana/issues/6985), [#7058](https://github.com/grafana/grafana/issues/7058) thx [@mtanda](https://github.com/mtanda)
- **Dataproxy**: Added setting to enable more verbose logging in dataproxy [#7209](https://github.com/grafana/grafana/pull/7209), thx [@Ricky-N](https://github.com/Ricky-N)
@@ -46,6 +46,10 @@ If you have an idea of how to improve Grafana, submit an [enhancement request](h
We want to make Grafana accessible to even more people. Submit an [accessibility issue](https://github.com/grafana/grafana/issues/new?labels=type%3A+accessibility&template=3-accessibility.md) to help us understand what we can improve.
### Write documentation
To edit or write technical content, refer to [Contribute to our documentation](/contribute/documentation/README.md). We welcome your expertise and input as our body of technical content grows.
### Triage issues
If you don't have the knowledge or time to code, consider helping with _issue triage_. The community will thank you for saving them time by spending some of yours.
@@ -76,6 +80,6 @@ Before we can accept your pull request, you need to [sign our CLA](https://grafa
## Where do I go from here?
- Set up your [development environment](contribute/developer-guide.md).
- Learn how to [contribute documentation](contribute/documentation.md).
- Learn how to [contribute documentation](contribute/README.md).
- Get started [developing plugins](https://grafana.com/docs/grafana/latest/developers/plugins/) for Grafana.
- Look through the resources in the [contribute](https://github.com/grafana/grafana/tree/main/contribute) folder.
- Look through the resources in the [contribute](contribute) folder.
@@ -4,7 +4,7 @@ The main goal of issue triage is to categorize all incoming Grafana issues and m
> **Note:** This information is for Grafana project Maintainers, Owners, and Admins. If you are a Contributor, then you will not be able to perform most of the tasks in this topic.
The core maintainers of the Grafana project are responsible for categorizing all incoming issues and delegating any critical or important issue to other maintainers. Currently one maintainer each week is responsible. Besides that part, triage provides an important way to contribute to an open source project.
The core maintainers of the Grafana project are responsible for categorizing all incoming issues and delegating any critical or important issue to other maintainers. Currently one maintainer each week is responsible. Besides that part, triage provides an important way to contribute to an open source project.
Triage helps ensure issues resolve quickly by:
@@ -18,6 +18,7 @@ If you don't have the knowledge or time to code, consider helping with triage. T
## Simplified flowchart diagram of the issue triage process
<!-- https://textik.com/#610afa78553def29 -->
```
+--------------------------+
+----------------+ New issue opened/ |
@@ -76,15 +77,16 @@ Instructions for setting up filters in Gmail can be found [here](#setting-up-gma
## 2. Ensure the issue contains basic information
Before triaging an issue very far, make sure that the issue's author provided the standard issue information. This will help you make an educated recommendation on how to categorize the issue. The Grafana project utilizes [GitHub issue templates](https://help.github.com/en/articles/creating-issue-templates-for-your-repository) to guide contributors to provide standard information that must be included for each type of template or type of issue.
Before triaging an issue very far, make sure that the issue's author provided the standard issue information. This will help you make an educated recommendation on how to categorize the issue. The Grafana project utilizes [GitHub issue templates](https://help.github.com/en/articles/creating-issue-templates-for-your-repository) to guide contributors to provide standard information that must be included for each type of template or type of issue.
### Standard issue information that must be included
Given a certain [issue template]([template](https://github.com/grafana/grafana/issues/new/choose)) have been used by the issue author or depending how the issue is perceived by the issue triage responsible, the following should help you understand what standard issue information that must be included.
Given a certain [issue template](<[template](https://github.com/grafana/grafana/issues/new/choose)>) have been used by the issue author or depending how the issue is perceived by the issue triage responsible, the following should help you understand what standard issue information that must be included.
#### Bug reports
Should explain what happened, what was expected and how to reproduce it together with any additional information that may help giving a complete picture of what happened such as screenshots, [query inspector](https://community.grafana.com/t/using-grafanas-query-inspector-to-troubleshoot-issues/2630) output and any environment related information that's applicable and/or maybe related to the reported problem:
- Grafana version
- Data source type & version
- Platform & OS Grafana is installed on
@@ -170,10 +172,12 @@ If it's not perfectly clear that it's an actual bug, quickly try to reproduce it
4. Move on to [prioritizing the issue](#4-prioritization-of-issues).
**It can't be reproduced:**
1. Either [ask for more information](#2-ensure-the-issue-contains-basic-information) needed to investigate it more thoroughly.
2. Either [delegate further investigations](#investigation-of-issues) to someone else.
**It works as intended/by design:**
1. Kindly and politely add a comment explaining briefly why we think it works as intended and close the issue.
2. Label the issue `type/works-as-intended`.
@@ -195,6 +199,7 @@ Second, label the issue `type/docs` and at least one `area/*` or `datasource/*`
**Minor typo/error/lack of information:**
There's a minor typo/error/lack of information that adds a lot of confusion for users and given the amount of work is a big win to make sure fixing it:
1. Either update the documentation yourself and open a pull request.
2. Either delegate the work to someone else by assigning that person to the issue and add the issue to next major/minor milestone.
@@ -299,12 +304,12 @@ For some other combinations it may not be possible at all for a maintainer to se
Even if you don't have the time or knowledge to investigate an issue we highly recommend that you [upvote](https://help.github.com/en/articles/about-conversations-on-github#reacting-to-ideas-in-comments) the issue if you happen to have the same problem. If you have further details that may help investigating the issue please provide as much information as possible.
## Automation
## Automation
We have some automation that triggers on comments or labels being added to issues. Many of these automated behaviors are defined in [commands.json](https://github.com/grafana/grafana/blob/main/.github/commands.json). Or in other [GitHub Actions](https://github.com/grafana/grafana/tree/main/.github/workflows)
* Add /duplicate `#<issue number>` to have Grafana label & close issue with an appropriate message.
* Add `bot/question` and the bot will close it with an appropriate message.
- Add /duplicate `#<issue number>` to have Grafana label & close issue with an appropriate message.
- Add `bot/question` and the bot will close it with an appropriate message.
[Read more on bot actions](https://github.com/grafana/grafana/blob/main/.github/bot.md)
@@ -324,6 +329,7 @@ Part of issue triage should also be triaging of external PRs. Main goal should b
If you're using Gmail it's highly recommended that you setup filters to automatically remove email from the inbox and label them accordingly to make it easy for you to understand when you need to act upon a notification or process all incoming issues that haven't been triaged.
This may be setup by personal preference, but here's a working configuration for reference.
1. Follow instructions in [gist](https://gist.github.com/marefr/9167c2e31466f6316c1cba118874e74f)
2. In Gmail, go to Settings -> Filters and Blocked Addresses
3. Import filters -> select xml file -> Open file
@@ -332,6 +338,7 @@ This may be setup by personal preference, but here's a working configuration for
6. Create filters
This will give you a structure of labels in the sidebar similar to the following:
This version of Grafana has big changes that will impact a limited set of plugins. We moved from systemjs to webpack
for built-in plugins and everything internal. External plugins still use systemjs but now with a limited
set of Grafana components they can import. Plugins can depend on libs like lodash & moment and internal components
like before using the same import paths. However since everything in Grafana is no longer accessible, a few plugins could encounter issues when importing a Grafana dependency.
for built-in plugins and everything internal. External plugins still use systemjs but now with a limited
set of Grafana components they can import. Plugins can depend on libs like lodash & moment and internal components
like before using the same import paths. However since everything in Grafana is no longer accessible, a few plugins could encounter issues when importing a Grafana dependency.
[List of exposed components plugins can import/require](https://github.com/grafana/grafana/blob/main/public/app/features/plugins/plugin_loader.ts#L48)
If you think we missed exposing a crucial lib or Grafana component let us know by opening an issue.
If you think we missed exposing a crucial lib or Grafana component let us know by opening an issue.
### Deprecated components
### Deprecated components
The angular directive `<spectrum-picker>` is now deprecated (will still work for a version more) but we recommend plugin authors
upgrade to new `<color-picker color="ctrl.color" onChange="ctrl.onSparklineColorChange"></color-picker>`
- Look through our [style guide and Storybook](https://developers.grafana.com/ui/latest/index.html).
@@ -40,8 +40,8 @@ If you're interested in contributing to the Grafana project:
- Follow [@grafana on Twitter](https://twitter.com/grafana/).
- Read and subscribe to the [Grafana blog](https://grafana.com/blog/).
- If you have a specific question, check out our [discussion forums](https://community.grafana.com/).
- For general discussions, join us on the [official Slack](http://slack.raintank.io/) team.
- For general discussions, join us on the [official Slack](https://slack.grafana.com) team.
## License
Grafana is distributed under [AGPL-3.0-only](LICENSE). For Apache-2.0 exceptions, see [LICENSING.md](LICENSING.md).
Grafana is distributed under [AGPL-3.0-only](LICENSE). For Apache-2.0 exceptions, see [LICENSING.md](https://github.com/grafana/grafana/blob/HEAD/LICENSING.md).
The roadmap is a tentative plan for the core development team. Things change constantly as pull requests come in and priorities change, but it will give you an idea of our current vision and plan.
The roadmap is a tentative plan for the core development team. Things change constantly as pull requests come in and priorities change, but it will give you an idea of our current vision and plan.
To view the Roadmap, go to the Issues tab on GitHub. There you will find three roadmap issues pinned at the top.
If you think you have found a security vulnerability, please send a report to [security@grafana.com](mailto:security@grafana.com). This address can be used for all of Grafana Labs's open source and commercial products (including but not limited to Grafana, Grafana Cloud, Grafana Enterprise, and grafana.com). We can accept only vulnerability reports at this address.
If you think you have found a security vulnerability, please send a report to [security@grafana.com](mailto:security@grafana.com). This address can be used for all of Grafana Labs's open source and commercial products (including but not limited to Grafana, Grafana Cloud, Grafana Enterprise, and grafana.com). We can accept only vulnerability reports at this address.
Please encrypt your message to us; please use our PGP key. The key fingerprint is:
F988 7BEA 027A 049F AE8E 5CAA D125 8932 BE24 C5CA
F988 7BEA 027A 049F AE8E 5CAA D125 8932 BE24 C5CA
The key is available from [keyserver.ubuntu.com](https://keyserver.ubuntu.com/pks/lookup?search=0xF9887BEA027A049FAE8E5CAAD1258932BE24C5CA&fingerprint=on&op=index).
@@ -14,7 +14,7 @@ Grafana Labs will send you a response indicating the next steps in handling your
## Security announcements
We maintain a category on the community site called [Security Announcements](https://community.grafana.com/c/security-announcements),
where we will post a summary, remediation, and mitigation details for any patch containing security fixes.
We maintain a category on the community site called [Security Announcements](https://community.grafana.com/c/support/security-announcements),
where we will post a summary, remediation, and mitigation details for any patch containing security fixes.
You can also subscribe to email updates to this category if you have a grafana.com account and sign on to the community site or track updates via an [RSS feed](https://community.grafana.com/c/security-announcements.rss).
You can also subscribe to email updates to this category if you have a grafana.com account and sign on to the community site or track updates via an [RSS feed](https://community.grafana.com/c/support/security-announcements.rss).
First, check the official [Grafana documentation](https://grafana.com/docs/).
If you require further help or support then ask a question in the [Grafana community site](https://community.grafana.com/) or [Grafana Slack](http://slack.raintank.io/). You can also search the community site for previously answered questions, in case someone already had your problem and got help.
**Please note:**
**Please note:**
- The Grafana project uses GitHub mainly for tracking bugs and feature requests.
- Do not open an issue just to ask a question. The issue will be closed immediately.
- Only submit issues for bug reports, feature requests, or enhancements.
@@ -13,6 +13,7 @@ Team members and their access to repositories is maintained through [GitHub team
## Proposing changes
Examples of proposed changes are overarching architecture, component design, and specific code or graphical elements. Proposed changes SHOULD cover the big picture and intention, but individual parts SHOULD be split into the smallest possible changes. Changes SHOULD be based on and target the main branch. Depending on size of the proposed change, each change SHOULD be discussed, in increasing order of change size and complexity:
- Directly in a RR (Pull Request) - this MAY be done, but SHOULD not be the common case.
- Issue
- Developer mailing list
@@ -24,6 +25,7 @@ Significant changes MUST be discussed and agreed upon with the relevant subsyste
Depending on the size and complexity of a PR, different requirements MUST be applied. Any team member contributing substantially to a PR MUST NOT count against review requirements.
Commits MUST be merged into main using PRs. They MUST NOT be merged into main directly.
- Every merge MUST be approved by at least one team member.
- Non-trivial changes MUST be approved by at least
- two team members, or
@@ -33,6 +35,7 @@ Commits MUST be merged into main using PRs. They MUST NOT be merged into main di
- the relevant subsystem maintainer.
PRs MUST be [reviewed](https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/reviewing-changes-in-pull-requests) and [approved](https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/approving-a-pull-request-with-required-reviews) via GitHub’s review system.
- Reviewers MAY write comments if approving
- Reviewers MUST write comments if rejecting a PR or if requesting changes.
@@ -40,9 +43,9 @@ Once a PR is approved as per above, any team member MAY merge the PR.
## Backporting a PR
PRs intended for inclusion in the next PATCH release they must be backported to the release branch. The bot can do this automatically. [Read more on backport PRs](https://github.com/grafana/grafana/blob/main/.github/bot.md). Both the source PR and the backport PR should be assigned to the patch release milestone, unless you are backporting to many releases then it can differ.
PRs intended for inclusion in the next PATCH release they must be backported to the release branch. The bot can do this automatically. [Read more on backport PRs](https://github.com/grafana/grafana/blob/main/.github/bot.md). Both the source PR and the backport PR should be assigned to the patch release milestone, unless you are backporting to many releases then it can differ.
Backport PRs are also needed during the beta period to get fixes into the stable release.
Backport PRs are also needed during the beta period to get fixes into the stable release.
# Release workflow
@@ -51,6 +54,7 @@ Backport PRs are also needed during the beta period to get fixes into the stable
Grafana uses trunk-based development.
In particular, we found that the following principles match how we work:
- Main and release branches MUST always build without failure.
- Branches SHOULD be merged often. Larger changes SHOULD be activated with feature flags until they are ready. Long-lived development branches SHOULD be avoided.
- Changes MAY be enabled by default once they are in a complete state
@@ -61,6 +65,7 @@ In particular, we found that the following principles match how we work:
Releases MUST follow [Semantic Versioning](https://semver.org/) in naming and SHOULD follow Semantic Versioning as closely as reasonably possible for non-library software.
Release branches MUST be split from the following branches.
- MAJOR release branches MUST be based on main.
- MINOR release branches MUST be based on main.
- PATCH release branches MUST be split from the relevant MINOR release branch’s most current PATCH
@@ -68,6 +73,7 @@ Release branches MUST be split from the following branches.
Security releases follow the same process but MUST be prepared in secret. Security releases MUST NOT include changes which are not related to the security fix. Normal release processes MUST accommodate the security release process. SECURITY.md MUST be followed.
# For "sqlite3" only. cache mode setting used for connecting to the database
cache_mode=private
# For "mysql" only if lockingMigration feature toggle is set. How many seconds to wait before failing to lock the database for the migrations, default is 0.
locking_attempt_timeout_sec=0
#################################### Cache server #############################
[remote_cache]
# Either "redis", "memcached" or "database" default is "database"
@@ -208,10 +211,16 @@ rudderstack_write_key =
# Rudderstack data plane url, enabled only if rudderstack_write_key is also set
rudderstack_data_plane_url=
# Rudderstack SDK url, optional, only valid if rudderstack_write_key and rudderstack_data_plane_url is also set
rudderstack_sdk_url=
# Rudderstack Config url, optional, used by Rudderstack SDK to fetch source config
rudderstack_config_url=
# Application Insights connection string. Specify an URL string to enable this feature.
application_insights_connection_string=
# Optional. Specifies an Application Insights endpoint URL where the endpoint string is wrapped in backticks ``.
# Optional. Specifies an Application Insights endpoint URL where the endpoint string is wrapped in backticks ``.
# Enable the Unified Alerting sub-system and interface. When enabled we'll migrate all of your alert rules and notification channels to the new system. New alert rules will be created and your notification channels will be converted into an Alertmanager configuration. Previous data is preserved to enable backwards compatibility but new data is removed when switching. When this configuration section and flag are not defined, the state is defined at runtime. See the documentation for more details.
enabled=
# Comma-separated list of organization IDs for which to disable unified alerting. Only supported if unified alerting is enabled.
disabled_orgs=
# Specify the frequency of polling for admin config changes.
admin_config_poll_interval_seconds=60
# The interval string is a possibly signed sequence of decimal numbers, followed by a unit suffix (ms, s, m, h, d), e.g. 30s or 1m.
admin_config_poll_interval=60s
# Specify the frequency of polling for Alertmanager config changes.
# The interval string is a possibly signed sequence of decimal numbers, followed by a unit suffix (ms, s, m, h, d), e.g. 30s or 1m.
alertmanager_config_poll_interval=60s
# Listen address/hostname and port to receive unified alerting messages for other Grafana instances. The port is used for both TCP and UDP. It is assumed other Grafana instances are also running on the same port.
ha_listen_address="0.0.0.0:9094"
# Explicit address/hostname and port to advertise other Grafana instances. The port is used for both TCP and UDP.
ha_advertise_address=""
# Comma-separated list of initial instances (in a format of host:port) that will form the HA cluster. Configuring this setting will enable High Availability mode for alerting.
ha_peers=""
# Time to wait for an instance to send a notification via the Alertmanager. In HA, each Grafana instance will
# be assigned a position (e.g. 0, 1). We then multiply this position with the timeout to indicate how long should
# each instance wait before sending the notification to take into account replication lag.
# The interval string is a possibly signed sequence of decimal numbers, followed by a unit suffix (ms, s, m, h, d), e.g. 30s or 1m.
ha_peer_timeout=15s
# The interval between sending gossip messages. By lowering this value (more frequent) gossip messages are propagated
# across cluster more quickly at the expense of increased bandwidth usage.
# The interval string is a possibly signed sequence of decimal numbers, followed by a unit suffix (ms, s, m, h, d), e.g. 30s or 1m.
ha_gossip_interval=200ms
# The interval between gossip full state syncs. Setting this interval lower (more frequent) will increase convergence speeds
# across larger clusters at the expense of increased bandwidth usage.
# The interval string is a possibly signed sequence of decimal numbers, followed by a unit suffix (ms, s, m, h, d), e.g. 30s or 1m.
ha_push_pull_interval=60s
# Enable or disable alerting rule execution. The alerting UI remains visible. This option has a legacy version in the `[alerting]` section that takes precedence.
execute_alerts=true
# Alert evaluation timeout when fetching data from the datasource. This option has a legacy version in the `[alerting]` section that takes precedence.
# The timeout string is a possibly signed sequence of decimal numbers, followed by a unit suffix (ms, s, m, h, d), e.g. 30s or 1m.
evaluation_timeout=30s
# Number of times we'll attempt to evaluate an alert rule before giving up on that evaluation. This option has a legacy version in the `[alerting]` section that takes precedence.
max_attempts=3
# Minimum interval to enforce between rule evaluations. Rules will be adjusted if they are less than this value or if they are not multiple of the scheduler interval (10s). Higher values can help with resource management as we'll schedule fewer evaluations over time. This option has a legacy version in the `[alerting]` section that takes precedence.
# The interval string is a possibly signed sequence of decimal numbers, followed by a unit suffix (ms, s, m, h, d), e.g. 30s or 1m.
# Makes it possible to turn off alert rule execution but alerting UI is visible
# Enable the legacy alerting sub-system and interface. If Unified Alerting is already enabled and you try to go back to legacy alerting, all data that is part of Unified Alerting will be deleted. When this configuration section and flag are not defined, the state is defined at runtime. See the documentation for more details.
enabled=
# Makes it possible to turn off alert execution but alerting UI is visible
execute_alerts=true
# Default setting for new alert rules. Defaults to categorize error and timeouts as alerting. (alerting, keep_state)
@@ -801,6 +876,11 @@ max_annotations_to_keep =
# Enable the Explore section
enabled=true
#################################### Query History #############################
# Used for uploading images to public servers so they can be included in slack/email messages.
@@ -913,10 +997,12 @@ enable_alpha = false
app_tls_skip_verify_insecure=false
# Enter a comma-separated list of plugin identifiers to identify plugins to load even if they are unsigned. Plugins with modified signatures are never loaded.
allow_loading_unsigned_plugins=
# Enable or disable installing plugins directly from within Grafana.
plugin_admin_enabled=false
# Enable or disable installing / uninstalling / updating plugins directly from within Grafana.
# Enter a comma-separated list of plugin identifiers to hide in the plugin catalog.
plugin_catalog_hidden_plugins=
#################################### Grafana Live ##########################################
[live]
@@ -983,12 +1069,14 @@ rendering_chrome_bin =
# Mode 'reusable' will have one browser instance and will create a new incognito page on each request.
rendering_mode=
# When rendering_mode = clustered you can instruct how many browsers or incognito pages can execute concurrently. Default is 'browser'
# When rendering_mode = clustered, you can instruct how many browsers or incognito pages can execute concurrently. Default is 'browser'
# and will cluster using browser instances.
# Mode 'context' will cluster using incognito pages.
rendering_clustering_mode=
# When rendering_mode = clustered you can define maximum number of browser instances/incognito pages that can execute concurrently..
# When rendering_mode = clustered, you can define the maximum number of browser instances/incognito pages that can execute concurrently. Default is '5'.
rendering_clustering_max_concurrency=
# When rendering_mode = clustered, you can specify the duration a rendering request can take before it will time out. Default is `30` seconds.
rendering_clustering_timeout=
# Limit the maximum viewport width, height and device scale factor that can be requested.
rendering_viewport_max_width=
@@ -1004,9 +1092,17 @@ grpc_port =
license_path=
[feature_toggles]
# enable features, separated by spaces
# there are currently two ways to enable feature toggles in the `grafana.ini`.
# you can either pass an array of feature you want to enable to the `enable` field or
# configure each toggle by setting the name of the toggle to true/false. Toggles set to true/false
# will take precedence over toggles in the `enable` list.
# enable = feature1,feature2
enable=
# feature1 = true
# feature2 = false
[date_formats]
# For information on what formatting patterns that are supported https://momentjs.com/docs/#/displaying/
# For "sqlite3" only. cache mode setting used for connecting to the database. (private, shared)
;cache_mode = private
# For "mysql" only if lockingMigration feature toggle is set. How many seconds to wait before failing to lock the database for the migrations, default is 0.
;locking_attempt_timeout_sec = 0
################################### Data sources #########################
[datasources]
# Upper limit of data sources that Grafana will return. This limit is a temporary configuration and it will be deprecated when pagination will be introduced on the list data sources API.
@@ -208,6 +211,18 @@
# Google Tag Manager ID, only enabled if you specify an id here
;google_tag_manager_id =
# Rudderstack write key, enabled only if rudderstack_data_plane_url is also set
;rudderstack_write_key =
# Rudderstack data plane url, enabled only if rudderstack_write_key is also set
;rudderstack_data_plane_url =
# Rudderstack SDK url, optional, only valid if rudderstack_write_key and rudderstack_data_plane_url is also set
;rudderstack_sdk_url =
# Rudderstack Config url, optional, used by Rudderstack SDK to fetch source config
#Enable the Unified Alerting sub-system and interface. When enabled we'll migrate all of your alert rules and notification channels to the new system. New alert rules will be created and your notification channels will be converted into an Alertmanager configuration. Previous data is preserved to enable backwards compatibility but new data is removed.```
;enabled = true
# Comma-separated list of organization IDs for which to disable unified alerting. Only supported if unified alerting is enabled.
;disabled_orgs =
# Specify the frequency of polling for admin config changes.
;admin_config_poll_interval_seconds = 60
# The interval string is a possibly signed sequence of decimal numbers, followed by a unit suffix (ms, s, m, h, d), e.g. 30s or 1m.
;admin_config_poll_interval = 60s
# Specify the frequency of polling for Alertmanager config changes.
# The interval string is a possibly signed sequence of decimal numbers, followed by a unit suffix (ms, s, m, h, d), e.g. 30s or 1m.
;alertmanager_config_poll_interval = 60s
# Listen address/hostname and port to receive unified alerting messages for other Grafana instances. The port is used for both TCP and UDP. It is assumed other Grafana instances are also running on the same port. The default value is `0.0.0.0:9094`.
;ha_listen_address = "0.0.0.0:9094"
# Listen address/hostname and port to receive unified alerting messages for other Grafana instances. The port is used for both TCP and UDP. It is assumed other Grafana instances are also running on the same port. The default value is `0.0.0.0:9094`.
;ha_advertise_address = ""
# Comma-separated list of initial instances (in a format of host:port) that will form the HA cluster. Configuring this setting will enable High Availability mode for alerting.
;ha_peers = ""
# Time to wait for an instance to send a notification via the Alertmanager. In HA, each Grafana instance will
# be assigned a position (e.g. 0, 1). We then multiply this position with the timeout to indicate how long should
# each instance wait before sending the notification to take into account replication lag.
# The interval string is a possibly signed sequence of decimal numbers, followed by a unit suffix (ms, s, m, h, d), e.g. 30s or 1m.
;ha_peer_timeout = "15s"
# The interval between sending gossip messages. By lowering this value (more frequent) gossip messages are propagated
# across cluster more quickly at the expense of increased bandwidth usage.
# The interval string is a possibly signed sequence of decimal numbers, followed by a unit suffix (ms, s, m, h, d), e.g. 30s or 1m.
;ha_gossip_interval = "200ms"
# The interval between gossip full state syncs. Setting this interval lower (more frequent) will increase convergence speeds
# across larger clusters at the expense of increased bandwidth usage.
# The interval string is a possibly signed sequence of decimal numbers, followed by a unit suffix (ms, s, m, h, d), e.g. 30s or 1m.
;ha_push_pull_interval = "60s"
# Enable or disable alerting rule execution. The alerting UI remains visible. This option has a legacy version in the `[alerting]` section that takes precedence.
;execute_alerts = true
# Alert evaluation timeout when fetching data from the datasource. This option has a legacy version in the `[alerting]` section that takes precedence.
# The timeout string is a possibly signed sequence of decimal numbers, followed by a unit suffix (ms, s, m, h, d), e.g. 30s or 1m.
;evaluation_timeout = 30s
# Number of times we'll attempt to evaluate an alert rule before giving up on that evaluation. This option has a legacy version in the `[alerting]` section that takes precedence.
;max_attempts = 3
# Minimum interval to enforce between rule evaluations. Rules will be adjusted if they are less than this value or if they are not multiple of the scheduler interval (10s). Higher values can help with resource management as we'll schedule fewer evaluations over time. This option has a legacy version in the `[alerting]` section that takes precedence.
# The interval string is a possibly signed sequence of decimal numbers, followed by a unit suffix (ms, s, m, h, d), e.g. 30s or 1m.
# Used for uploading images to public servers so they can be included in slack/email messages.
@@ -887,10 +974,12 @@
;app_tls_skip_verify_insecure = false
# Enter a comma-separated list of plugin identifiers to identify plugins to load even if they are unsigned. Plugins with modified signatures are never loaded.
;allow_loading_unsigned_plugins =
# Enable or disable installing plugins directly from within Grafana.
# Enable or disable installing / uninstalling / updating plugins directly from within Grafana.
# Enter a comma-separated list of plugin identifiers to hide in the plugin catalog.
;plugin_catalog_hidden_plugins =
#################################### Grafana Live ##########################################
[live]
@@ -956,12 +1045,14 @@
# Mode 'reusable' will have one browser instance and will create a new incognito page on each request.
;rendering_mode =
# When rendering_mode = clustered you can instruct how many browsers or incognito pages can execute concurrently. Default is 'browser'
# When rendering_mode = clustered, you can instruct how many browsers or incognito pages can execute concurrently. Default is 'browser'
# and will cluster using browser instances.
# Mode 'context' will cluster using incognito pages.
;rendering_clustering_mode =
# When rendering_mode = clustered you can define maximum number of browser instances/incognito pages that can execute concurrently..
# When rendering_mode = clustered, you can define the maximum number of browser instances/incognito pages that can execute concurrently. Default is '5'.
;rendering_clustering_max_concurrency =
# When rendering_mode = clustered, you can specify the duration a rendering request can take before it will time out. Default is `30` seconds.
;rendering_clustering_timeout =
# Limit the maximum viewport width, height and device scale factor that can be requested.
;rendering_viewport_max_width =
@@ -978,8 +1069,15 @@
;license_path =
[feature_toggles]
# enable features, separated by spaces
;enable =
# there are currently two ways to enable feature toggles in the `grafana.ini`.
# you can either pass an array of feature you want to enable to the `enable` field or
# configure each toggle by setting the name of the toggle to true/false. Toggles set to true/false
# will take presidence over toggles in the `enable` list.
;enable = feature1,feature2
;feature1 = true
;feature2 = false
[date_formats]
# For information on what formatting patterns that are supported https://momentjs.com/docs/#/displaying/
@@ -121,7 +121,7 @@ You can see an example implementation above of the IsDisabled method and custom
## Run Wire / generate code
When running `make run` it will call `make gen-go` on the first run. `gen-go` in turn will call the wire binary and generate the code in [wire_gen.go](/pkg/server/wire_gen.go). The wire binary is installed using [bingo](https://github.com/bwplotka/bingo) which will make sure to download and install all the tools needed, including the Wire binary at using a specific version.
When running `make run` it will call `make gen-go` on the first run. `gen-go` in turn will call the wire binary and generate the code in [wire_gen.go](/pkg/server/wire_gen.go) and [wire_gen.go](/pkg/cmd/grafana-cli/runner/wire_gen.go). The wire binary is installed using [bingo](https://github.com/bwplotka/bingo) which will make sure to download and install all the tools needed, including the Wire binary at using a specific version.
[BackendSrv](https://grafana.com/docs/grafana/latest/packages_api/runtime/backendsrv) handles all outgoing HTTP requests from Grafana. This document explains the high-level concepts used by `BackendSrv`.
## Canceling requests
This section describes how canceling requests work in Grafana. While data sources can implement their own cancellation concept, we recommend that you use the method we describe here.
A data request can take a long time to finish. During the time between when a request starts and finishes, the user can change context. For example, the user may navigate away or issue the same request again.
@@ -12,29 +13,35 @@ If we wait for canceled requests to complete, it might create unnecessary load o
Grafana uses a concept called _request cancelation_ to cancel any ongoing request that Grafana doesn't need.
#### Before Grafana 7.2
Before Grafana can cancel any data request, it has to identify that request. Grafana identifies a request using the property `requestId` [passed as options](https://github.com/grafana/grafana/blob/main/docs/sources/packages_api/runtime/backendsrvrequest.md) when you use [BackendSrv](https://grafana.com/docs/grafana/latest/packages_api/runtime/backendsrv).
The cancellation logic is as follows:
- When an ongoing request discovers that an additional request with the same `requestId` has started, then Grafana will cancel the ongoing request.
- When an ongoing request discovers that the special "cancel all requests" `requestId` was sent, then Grafana will cancel the ongoing request.
#### After Grafana 7.2
Grafana 7.2 introduced an additional way of canceling requests using [RxJs](https://github.com/ReactiveX/rxjs). To support the new cancellation functionality, the data source needs to use the new `fetch` function in [BackendSrv](https://grafana.com/docs/grafana/latest/packages_api/runtime/backendsrv).
Migrating the core data sources to the new `fetch` function [is an ongoing process that you can read about in this issue.](https://github.com/grafana/grafana/issues/27222)
## Request queue
Depending on how the web browser implements the protocol for HTTP 1.1, it will limit the number of parallel requests, lets call this limit _max_parallel_browser_request_.
Depending on how the web browser implements the protocol for HTTP 1.1, it will limit the number of parallel requests, lets call this limit _max_parallel_browser_request_.
Unless you have configured Grafana to use HTTP2, the browser limits parallel data requests according to the browser's implementation. For more information on how to enable HTTP2, refer to [Configuration](https://grafana.com/docs/grafana/latest/administration/configuration/#protocol).
Because there is a _max_parallel_browser_request_ limit, if some of the requests take a long time, they will block later requests and make interacting with Grafana very slow.
#### Before Grafana 7.2
Not supported.
Not supported.
#### After Grafana 7.2
Grafana uses a _request queue_ to process all incoming data requests in order while reserving a free "spot" for any requests to the Grafana API.
Grafana uses a _request queue_ to process all incoming data requests in order while reserving a free "spot" for any requests to the Grafana API.
Since the first implementation of the request queue doesn't take into account what browser the user uses, the _request queue_ limit for parallel data source requests is hard-coded to 5.
@@ -62,7 +62,7 @@ We use [pa11y-ci](https://github.com/pa11y/pa11y-ci) to collect accessibility er
If the contribution introduces new a11y errors, our continuous integration will fail, preventing you to merge on the main branch. In those cases there are two alternatives for moving forward:
- Check the error log on the pipeline step `test-a11y-frontend-pr`, identify what was the error, and fix it.
- Locally run the command `yarn test:accessibility-report` that generates an HTML accessibility report, then go to the URL that contains your change, identify the error, and fix it. Keep in mind, a local Grafana instance needs to be running on `http://localhost:3000`.
- Locally run the command `yarn test:accessibility-report` that generates an HTML accessibility report, then go to the URL that contains your change, identify the error, and fix it. Keep in mind, a local e2e Grafana instance is going to be running on `http://localhost:3001`.
You can also prevent introducing a11y errors by installing an a11y plugin in your browser, for example, axe DevTools, Accessibility Insights for Web among others.
@@ -95,25 +95,25 @@ The area should use upper camel case, e.g. UpperCamelCase.
Prefer using one of the following areas:
- **Build:** Changes to the build system, or external dependencies.
- **Chore:** Changes that don't affect functionality.
- **Dashboard:** Changes to the Dashboard feature.
- **Docs:** Changes to documentation.
- **Explore:** Changes to the Explore feature.
- **Plugins:** Changes to any of the plugins.
- **Build:** Change the build system, or external dependencies
- **Chore:** Change that don't affect functionality
- **Dashboard:** Change the Dashboard feature
- **Docs:** Change documentation
- **Explore:** Change the Explore feature
- **Plugins:** Change the ... plugin
For changes to data sources, the area should be the name of the data source, e.g., AzureMonitor, Graphite, and Prometheus.
For changes to data sources, the area is the name of the data source. For example, AzureMonitor, Graphite, or Prometheus.
For changes to panels, the area should be the name of the panel, suffixed with Panel, e.g., GraphPanel, SinglestatPanel, and TablePanel.
For changes to panels, the area is the name of the panel, suffixed with Panel. For example, GraphPanel, SinglestatPanel, or TablePanel.
**Examples**
-`Build: Support publishing MSI to grafana.com`
-`Explore: Add Live option for supported data sources`
-`GraphPanel: Fix legend sorting issues`
-`Docs: Changed url to URL in all documentation files`
-`Docs: Change url to URL in all documentation files`
If you're unsure, please have a look at the existing [changelog](https://github.com/grafana/grafana/blob/main/CHANGELOG.md) for inspiration/guidance.
If you're unsure, see the existing [changelog](https://github.com/grafana/grafana/blob/main/CHANGELOG.md) for inspiration or guidance.
@@ -10,14 +10,8 @@ Make sure you have the following dependencies installed before setting up your d
- [Git](https://git-scm.com/)
- [Go](https://golang.org/dl/) (see [go.mod](../go.mod#L3) for minimum required version)
Additionally you'll need:
- [Node.js](https://nodejs.org) (see `volta.node` property in [package.json](../package.json) for the correct version).
- [Yarn](https://yarnpkg.com) (see `volta.yarn` property in [package.json](../package.json) for the correct version).
We recommend using [Volta](https://github.com/volta-cli/volta) to manage your JS toolchain.
Refer to the [Volta Getting Started Guide](https://docs.volta.sh/guide/getting-started) for setup instructions for your operating system.
- [Node.js (Long Term Support)](https://nodejs.org)
- [Yarn](https://yarnpkg.com)
### macOS
@@ -26,6 +20,8 @@ We recommend using [Homebrew](https://brew.sh/) for installing any missing depen
```
brew install git
brew install go
brew install node@16
npm install -g yarn
```
### Windows
@@ -43,6 +39,14 @@ For alternative ways of cloning the Grafana repository, please refer to [GitHub'
**Warning:** Do not use `go get` to download Grafana. Recent versions of Go have added behavior which isn't compatible with the way the Grafana repository is structured.
### Configure Editors
For some IDEs, additional configuration may be needed for Typescript to work with [Yarn plug'n'play](https://yarnpkg.com/features/pnp).
For [VSCode](https://yarnpkg.com/getting-started/editor-sdks#vscode) and [Vim](https://yarnpkg.com/getting-started/editor-sdks#vim),
it's as easy as running `yarn dlx @yarnpkg/sdks vscode` or `yarn dlx @yarnpkg/sdks vim`, respectively.
More information can be found [here](https://yarnpkg.com/getting-started/editor-sdks).
## Build Grafana
Grafana consists of two components; the _frontend_, and the _backend_.
@@ -52,7 +56,7 @@ Grafana consists of two components; the _frontend_, and the _backend_.
Before we can build the frontend assets, we need to install the dependencies:
```
yarn install --pure-lockfile
yarn install --immutable
```
After the command has finished, we can start building our source code:
@@ -85,7 +89,23 @@ When you log in for the first time, Grafana asks you to change your password.
The Grafana backend includes SQLite which requires GCC to compile. So in order to compile Grafana on Windows you need to install GCC. We recommend [TDM-GCC](http://tdm-gcc.tdragon.net/download). Eventually, if you use [Scoop](https://scoop.sh), you can install GCC through that.
You can simply build the back-end as follows:`go run build.go build`. The Grafana binaries will be in bin\\windows-amd64.
You can build the back-end as follows:
1. Follow the [instructions](https://github.com/google/wire#installing) to install the Wire tool.
2. Generate code using Wire:
```
# Normally Wire tool installed at $GOPATH/bin/wire.exe
<Wire tool install path> gen -tags oss ./pkg/server ./pkg/cmd/grafana-cli/runner
```
3. Build the Grafana binaries:
```
go run build.go build
```
The Grafana binaries will be in bin\\windows-amd64.
Alternately, if you wish to use the `make` command, install [Make for Windows](http://gnuwin32.sourceforge.net/packages/make.htm) and use it in a Unix shell (f.ex. Git Bash).
## Test Grafana
@@ -192,11 +212,6 @@ make build-docker-full
The resulting image will be tagged as grafana/grafana:dev.
> **Note:** If you've already set up a local development environment, and you're running a `linux/amd64` machine, you can speed up building the Docker image:
1. Build the frontend: `go run build.go build-frontend`.
1. Build the Docker image: `make build-docker-dev`.
**Note:** If you are using Docker for macOS, be sure to set the memory limit to be larger than 2 GiB. Otherwise, `grunt build` may fail. The memory limit settings are available under **Docker Desktop** -> **Preferences** -> **Advanced**.
## Troubleshooting
@@ -216,7 +231,7 @@ ulimit -a
To change the number of open files allowed, run:
```
ulimit -S -n 2048
ulimit -S -n 4096
```
The number of files needed may be different on your environment. To determine the number of open files needed by `make run`, run:
This documents guides you through the process of contributing to the Grafana documentation. Make sure you've read the guide for [Contributing to Grafana](/CONTRIBUTING.md).
## Your first contribution
If you’re unsure about where to start, check out some of our [open docs issues](https://github.com/grafana/grafana/issues?q=is%3Aopen+is%3Aissue+label%3Atype%2Fdocs).
Sometimes it can be difficult to understand an issue when you're just getting started. Refer to this list of [beginner-friendly issues](https://github.com/grafana/grafana/issues?q=is%3Aopen+is%3Aissue+label%3Atype%2Fdocs+label%3A"beginner+friendly") for tasks suitable for first-time contributors.
When you’ve found an issue you want to work on, please comment on the issue to let other people know you intend to work on it.
If you encounter any misspellings or violations to the style guide, please let us know by submitting an issue (or just fix them if they are minor changes).
On every page in the [documentation](https://grafana.com/docs/) are two links in the upper right corner:
- **Edit this page** takes you directly to the file on GitHub where you can contribute a fix.
- **Request doc changes** prepares an issue on GitHub with relevant information already filled in.
## Join our community
For general discussions on documentation, you’re welcome to join the `#docs` channel on our [public Grafana Slack](http://slack.raintank.io) team.
## Style and formatting
All Grafana documentation is written using [Markdown](https://en.wikipedia.org/wiki/Markdown), and can be found in the [docs](/docs) directory in the [Grafana GitHub repository](https://github.com/grafana/grafana). The [documentation website](https://grafana.com/docs) is generated with [Hugo](https://gohugo.io) which uses [Blackfriday](https://github.com/russross/blackfriday) as its Markdown rendering engine.
### Documentation structure
The Grafana documentation is organized into topics, called _sections_. You can take a look at the current build at [grafana.com/docs/](https://grafana.com/docs/).
Each top-level section is located under the [docs/sources](/docs/sources) directory. Subsections are added by creating a subdirectory in the directory of the parent section.
For each section, an `_index.md` file provides an overview of the topic.
### Style guide
Refer to the [Documentation style guide](style-guides/documentation-style-guide.md) for information about Grafana style, word choice, and grammar conventions.
### Spelling
The [codespell](https://github.com/codespell-project/codespell) tool is run for every change to catch common misspellings.
We provide these guidelines to help our contributors make additions or corrections to our documentation.
## Welcome
Welcome. We're glad you're here to help make our technical documentation even better. We develop content that leads our users to success using Grafana products. Technical accuracy is our primary consideration, and we value the use of inclusive language. We regard your feedback as a gift - thanks for reading through these guidelines.
### Intended audience
We write these guidelines for contributors who are interested in improving our technical content.
## Understanding the structure of Grafana documentation
All Grafana Enterprise and OSS documentation is located in the [Grafana open source project](https://github.com/grafana/grafana) GitHub repository: https://github.com/grafana/grafana/tree/main/docs/sources.
- The **sources** directory organizes content by topic areas, for example **administration** and **alerting**.
- Topic directories include an `_index.md` file, which provides an overview of the topic, and optionally includes subtopics that provide more detail.
> The `_index.md` file is required.
### Writing in markdown
We write technical documentation using [Markdown](https://en.wikipedia.org/wiki/Markdown). We've put together a short guide to help you how to structure and format your content.
To access the markdown guide, refer to [Markdown style guide](documentation-markdown-guide.md).
## Ways to contribute
We're thrilled that you are considering contributing to the documentation. You can contribute content in the following ways:
- [Request a change](#request-a-change)
- [Edit a topic](#edit-a-topic)
- [Write a topic](#write-a-topic)
### Request a change
Request a change when you want to make a suggestion about a topic, but don't want to provide an edit that generates a pull request. Requesting a change gives you the freedom to express your ideas without committing language. Your suggestion can reflect a small change to wording or can reflect larger, more substantive changes.
GitHub captures your request as an **Issue** logged against the repository.
Before you begin:
- Create a GitHub account.
To request a change, complete the following steps:
1. While viewing the topic, click **Request a change**.
The Issue title auto-populates with the location of the file about which you are requesting a change.

2. Enter a change request description.
3. Add the **type/docs** label.
4. Click **Submit new issue**.
### Edit a topic
If you want to recommend a small change, such as suggesting a correction to a topic, you can edit the topic directly in GitHub. You are not required to fork and clone the repo to use this approach.
Other small changes might include:
- Adding steps to a task
- Adding clarifying language to a concept
- Providing an example
Before you begin:
- Create a GitHub account.
To edit a topic, complete the following steps:
1. While viewing the topic you want to edit, click **Edit this page**.

2. Add your changes to the topic.
3. Scroll to the bottom of the page and enter a branch name.
For example, enter `clarified dashboard panel definition`.
4. Click **Commit**.
GitHub prompts you to create a PR.
5. Complete the prompts provided in the body of the PR.
6. Click **Create pull request**.
### Write a topic
At Grafana Labs, we use the principles of topic-based authoring when we write technical documentation. Topic-based authoring provides guidelines for writing three _types_ of technical documentation: concept, task, and reference. Before you begin writing, establish the topic type you want to write.
#### Understanding topic types
Technical content is divided into three topic types: concept, task, and reference.
- **Concept**: A concept topic explains _what_ a feature (or idea) is, and why it is important.
- **Task**: A task topic explains _how_ to complete an end user procedure in the system. Task topics contain steps.
- **Reference** A reference topic contains lookup information that a user might consult when they complete a task. Documenting a list of values with descriptions is a common form of reference topic.
**Example**
Suppose you are writing content for a site called _Doggie handbook_. You might organize your topics like this:
**Concepts**
- What a dog is
- Brief history of dogs
- Why you might want a dog
- Tasks dogs can be trained to do
**Tasks**
- Feed the dog
- Groom the dog
- Train the dog
**References**
- List of dog equipment you will need
- Table of breeds that includes breed name, size range, short or long hair, and type of dog
#### Prepare your environment
Before you begin writing, we recommend that you fork and clone the Grafana repository so that you can use a text editor locally to create branches, commit your changes, and create a PR.
While this document doesn't include git commands or descriptions of Github operations, you might find these links useful.
- [Install git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git): We store all source code, including documentation, in Git repositories.
- [Fork a repo](https://docs.github.com/en/get-started/quickstart/fork-a-repo): Locate the repo you want to clone, and fork it.
- [Clone a repo](https://docs.github.com/en/repositories/creating-and-managing-repositories/cloning-a-repository): Clone the repository to your local machine.
- [Create a branch](https://git-scm.com/book/en/v2/Git-Branching-Basic-Branching-and-Merging): Before you make change, create a branch. Do not push changes against the `main` branch.
- [Create a PR](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request): After you add, commit, and push your changes, create a PR in Github.
#### Use a documentation template to contribute a topic
We have provided documentation templates that align with each topic type:
Each template provides additional usage and formatting guidelines. We recommend that you make a copy of whichever template you are using, then add content.
> Remove any unused content before you commit your changes.
#### View a local build
Prior to pushing your changes, you can view a local build of the documentation so that you can review your work.
When you are ready for other people to review your work, perform the following tasks.
1. [Add](https://git-scm.com/docs/git-add) your changes, which prepares your content for the next commit.
1. [Commit](https://git-scm.com/docs/git-commit) your changes.
1. [Push](https://git-scm.com/docs/git-push) your changes to Github.
1. [Create a PR](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request) in Github.
The docs build system automatically conducts a series of tests to ensure that the content doesn't conflict with other content in the docs repository.
### Understanding the PR review and approval workflow
When a PR is added to the repo with a label associated with `docs`, it will be reviewed by a member of the technical writing team. Depending on the size of the PR and the priority of other work, the PR will either be immediately reviewed and merged (minor fixes typically follow this pattern) or the PR will be triaged and placed in the backlog of work or moved into further development.
## Join our community
For general discussions on documentation, you’re welcome to join the `#docs` channel on our [public Grafana Slack](http://slack.raintank.io) team.
## Reference: Top five writing tips
While we don't provide a comprehensive style guide in this document, here's a few writing tips to help the writing process.
### Consider the audience
Write for an audience that is computer literate and has general technical knowledge, but is not necessarily familiar with Grafana or the finer points of observability.
Pretend you are explaining your topic to a brand new Grafana user or developer.
### Write clear and concise sentences and paragraphs
Use the following sentence structure when you write: _subject_—_verb_—_object_. If you are telling a user to do something, write an imperative sentence. For example “Enter the refresh rate time interval and click Save.”
- You can also start a sentence with an _if_ clause, which positions the condition before the action.
- Limit the number of words in a sentence to 20..
### Use active voice
Active voice makes the performer of the action the subject
of the sentence. When you write in passive voice, the recipient of the action (and not the performer) becomes the subject of the sentence.
Active-voice sentences are more direct and clearly identify _who_ is doing _what_. Not all tasks are completed by a user; sometimes the system can also be a performer (and by extension, the subject of the sentence). When you write in active voice you clearly make that distinction, which results in more engaging and less wordy content.
| After you upgrade the software, restart the computer. | After the software has been upgraded, the computer can be restarted. |
| Click **OK** to save the dashboard. | The dashboard is saved when the **OK** button is clicked. |
| Create a dashboard. | A dashboard is created by you. | . |
### Avoid obscure non-English words and abbreviations
Users might be unfamiliar with some non-English words and abbreviations such as _per_, _vs_, and _via_. Latin abbreviations in particular, like _i.e._, _e.g._, and _etc._, are vague.
| Use | Don’t use |
| ------------ | ----------- |
| through | via |
| that is | i.e. |
| according to | per, as per |
| and so on | etc. |
### Write self-contained topics
Thanks to search engines, every page in the documentation might be a reader's entry point. This means that each page needs to be self-contained and make sense on its own. The reader should not need to read other topics in order to perform the task or understand the concept.
However, try to be helpful and link to related information. Using the _Doggie handbook_ example, the concept topic that explains what dogs can be trained to do might link to the Train the dog task.
@@ -12,19 +12,18 @@ In Markdown, the number of "#" symbols creates different heading levels, similar
- \#\# is \<h2>.
- \#\#\# is \<h3>.
Start your document with a single ``#`` for the title of the page. Add the sub-headings with two ``##``.
Start your document with a single `#` for the title of the page. Add the sub-headings with two `##`.
## Bold and emphasis
- Make text **bold** using two asterisks.
**Example:** It is ``**important**`` to use GitHub-flavored Markdown emoji consistently.
**Example:** It is `**important**` to use GitHub-flavored Markdown emoji consistently.
- Make text ``_emphasized_`` using single `` _underscores_``. Do not use the single asterisk, it can be easily confused with bold.
- Make text `_emphasized_` using single ` _underscores_`. Do not use the single asterisk, it can be easily confused with bold.
**Example:** GitHub-flavored markdown emoji should _only_ appear in specific cases.
## Links and references
Create links to other website by wrapping the display text in square brackets, and the web URL in curved brackets.
@@ -62,12 +61,13 @@ Write the name of the language after the first set of back tics, no spaces, to s
```javascript
function testNum(a) {
if (a > 0) {
return "positive";
return 'positive';
} else {
return "NOT positive";
return 'NOT positive';
}
}
```
## Tables
Construct a table by typing the table headings, and separating them with a "|" character. Then, add a second line of dashes ("-") separated by another "|" character. When constructing the table cells, separate each cell data with another "|".
@@ -82,9 +82,9 @@ Cell one data| Cell two data
Will publish as:
Heading one | Heading two
------------|------------
Cell one data| Cell two data
| Heading one | Heading two |
| ------------- | ------------- |
| Cell one data| Cell two data |
## Lists
@@ -121,19 +121,20 @@ _Do not_ use image shortcodes at this time.
Include images in a document using the following syntax:
```


```
> **Note:** Alt text does not appear when the user hovers the mouse over the image, but title text does.
@@ -23,20 +23,20 @@ Concepts are topic types for any information that doesn't involve task lists or
## Idea
Concept topics or sections explain *what* and *why*. They do not explain *how*. If you are a new user, you might look for concept information to learn about what Grafana is, why it might be useful to you, and what the general workflow is.
Concept topics or sections explain _what_ and _why_. They do not explain _how_. If you are a new user, you might look for concept information to learn about what Grafana is, why it might be useful to you, and what the general workflow is.
## Workflow
Continuing the example in the previous section, here is a sample Grafana workflow.
Continuing the example in the previous section, here is a sample Grafana workflow.
1. Install Grafana. <link to task for installing Grafana>
1. Set up data sources. <link to data sources concept topic, which links to data source task topics>
1. Create panels. <link to panel concept topic, which links to tasks>
1. Create dashboards. <link to panel concept topic, which links to tasks>
1. Create dashboards. <link to panel concept topic, which links to tasks>
1. Enter queries. <link to query editor concept topic>
1. Add users. <link to user management concept topic, which links to tasks>
1. Create playlists. <link to Playlist topic that contains concept information and tasks>
## Next steps
Concept tasks often link to related information, including *tasks* related to the concept and *reference* topics related to the concept.
Concept tasks often link to related information, including _tasks_ related to the concept and _reference_ topics related to the concept.
The *reference* topic type is for storing reference information, such as extensive tables, lists, or other information that is used as support for a task. Reference topics are also designed for API information.
The _reference_ topic type is for storing reference information, such as extensive tables, lists, or other information that is used as support for a task. Reference topics are also designed for API information.
Often reference topics are linked from *task* topics, because they contain information the user needs in order to perform a task.
Often reference topics are linked from _task_ topics, because they contain information the user needs in order to perform a task.
[Grafana CLI](https://grafana.com/docs/grafana/latest/administration/cli/) is one example of a reference topic.
@@ -41,12 +41,12 @@ The [Glossary](https://grafana.com/docs/grafana/latest/guides/glossary/) provide
While you might not need a heading for each table, headings are a good way to chunk information if you have several tables. They also make the content easy to skim. Use headings or intro paragraphs like this one to explain to the reader what the information in the table is used for.
A *task* topic is intended for a procedure that describes how to accomplish a task. It lists a series of steps that users follow to produce an intended outcome. It tells the reader *how* to do something. [Install Grafana plugins](https://grafana.com/docs/grafana/latest/plugins/installation/) and [Playlist](https://grafana.com/docs/grafana/latest/reference/playlist/) are examples of task topics. Playlist includes a small amount of concept information in the introduction, which is appropriate.
A _task_ topic is intended for a procedure that describes how to accomplish a task. It lists a series of steps that users follow to produce an intended outcome. It tells the reader _how_ to do something. [Install Grafana plugins](https://grafana.com/docs/grafana/latest/plugins/installation/) and [Playlist](https://grafana.com/docs/grafana/latest/reference/playlist/) are examples of task topics. Playlist includes a small amount of concept information in the introduction, which is appropriate.
Always include an introduction of a short paragraph or two to explain what the task is for, perhaps give the reader an idea of what the outcome will be.
@@ -52,6 +52,6 @@ Thanks to internet search engines, every page in the documentation could be page
## Testing
It is a good practice to have someone else test the task you have written. If they can successfully complete the task using *only* what the steps you have written, not guessing or using their inherent knowledge, then your task has passed the test. However, it is very common to find you have skipped steps, because *you* are very familiar with Grafana and the topic you are explaining.
It is a good practice to have someone else test the task you have written. If they can successfully complete the task using _only_ what the steps you have written, not guessing or using their inherent knowledge, then your task has passed the test. However, it is very common to find you have skipped steps, because _you_ are very familiar with Grafana and the topic you are explaining.
New users or people from other teams are very helpful for these tests.
@@ -21,9 +21,13 @@ The following checklist/summary should give you a quick overview of what to ask/
Before actually merging a pull request there's a couple of things to take into consideration.
### Status checks
Before you can merge a pull request, it must have a review approval, and all the required status checks must pass.
### Format the pull request title
Make sure that the pull request title is properly formatted according to `<Area>: <Summary>` and try to make the summary short and understandable for the community as a whole.
The pull request title should be formatted according to `<Area>: <Summary>`. Keep the summary short and understandable for the community as a whole.
All commits in a pull request are squashed when merged and the pull request title will be the default subject line of the squashed commit message. It's also used for [changelog/release notes](#include-in-changelog-and-release-notes).
@@ -31,9 +35,9 @@ See [formatting guidelines](create-pull-request.md#formatting-guidelines) for mo
### Assign a milestone
It's recommended to add a milestone to every pull request. This makes it easier to track what changes did go into a certain release. Without this you're basically left with going through git commits which could be a lot harder.
A milestone **should** be added to every pull request. Several things in the Grafana release process requires at least pull requests to be in a milestone, for example [generating changelog/release notes](#include-in-changelog-and-release-notes).
There's also various tooling built that in some cases requires a pull request to be assigned a milestone, for example [generating changelog/release notes](#include-in-changelog-and-release-notes).
This makes it easier to track what changes go into a certain release. Without this information, release managers have to go through git commits which is not an efficient process.
### Include in changelog and release notes?
@@ -81,8 +85,21 @@ In case the pull request introduces a breaking change you should document this.
### Should the pull request be backported?
An active decision of backporting needs to be taken for every pull request. There's a pull request check named **Backport Check** that will enforce this. By adding/removing labels on the pull request the check will be re-evaluated.
#### No backport
If you don't want to backport you need to add a label named **no-backport** to the pull request.
#### Backport
If your pull request has changes that need to go into one or several existing release branches you need to backport the changes. Please refer to [Backport PR](.github/bot.md#backport-pr) for detailed instructions.
The general rule of thumb regarding what changes goes into what release is:
- bug fixes should be released in patch releases, e.g. v8.1.3, if the bug was introduced in the same major/minor or lower patch version.
- new features should go into the next major/minor version, e.g. v8.0.0, v8.2.0.
Some examples when backport is required:
- The change needs to be released in the next upcoming patch release, e.g. v8.1.3, so you have to backport it, e.g. into the v8.1.x release branch.
# Guidelines for code comments in grafana-* packages
# Guidelines for code comments in grafana-\* packages
This document aims to give you some recommendation on how to add code comments to the exported code in the grafana packages.
@@ -9,11 +9,12 @@ This document aims to give you some recommendation on how to add code comments t
1. [Deprecate an API](#deprecate-an-api)
1. [Specify parameters](#specify-parameters)
1. [Set return values](#set-return-values)
____
## Add package description
---
Each package has an overview explaining the overall responsibility and usage of the package.
## Add package description
Each package has an overview explaining the overall responsibility and usage of the package.
You can document this description with [`@packageDocumentation`](https://api-extractor.com/pages/tsdoc/tag_packagedocumentation/) tag.
@@ -32,33 +33,34 @@ All `exported` apis from the package should have a release tag to indicate its s
Add a tag to mark the stability of the whole exported `class/interface/function/type` etc.
Please place the `release tag` at the bottom of the comment to make it consistent among files and easier to read.
Please place the `release tag` at the bottom of the comment to make it consistent among files and easier to read.
**Do:**
```typescript
````typescript
/**
* Will help to create DataFrame objects and handle
* Will help to create DataFrame objects and handle
* the heavy lifting of creating a complex object.
*
*
* @example
* ```typescript
* const dataFrame = factory.create();
* ```
*
*
* @public
**/
export class DataFrameFactory {
create():DataFrame{}
create(): DataFrame {}
}
```
````
**Don't**
```typescript
````typescript
/**
* Will help to create DataFrame objects and handle
* Will help to create DataFrame objects and handle
* the heavy lifting of creating a complex object.
*
*
* @public
* @example
* ```typescript
@@ -66,9 +68,9 @@ export class DataFrameFactory {
* ```
**/
export class DataFrameFactory {
create():DataFrame{}
create(): DataFrame {}
}
```
````
### Partial stability of APIs
@@ -78,59 +80,61 @@ Then override the non-stable parts of the API with the proper [release tag](#rel
**Do:**
```typescript
````typescript
/**
* Will help to create DataFrame objects and handle
* Will help to create DataFrame objects and handle
* the heavy lifting of creating a complex object.
*
*
* @example
* ```typescript
* const dataFrame = factory.create();
* ```
*
*
* @public
**/
export class DataFrameFactory {
create():DataFrame{}
create(): DataFrame {}
/**
* @beta
**/
createMany():DataFrames[]{}
/**
* @beta
**/
createMany(): DataFrames[] {}
}
```
````
**Don't**
```typescript
````typescript
/**
* Will help to create DataFrame objects and handle
* Will help to create DataFrame objects and handle
* the heavy lifting of creating a complex object.
*
*
* @example
* ```typescript
* const dataFrame = factory.create();
* ```
**/
export class DataFrameFactory {
/**
* @public
**/
create():DataFrame{}
/**
* @public
**/
create(): DataFrame {}
/**
* @beta
**/
createMany():DataFrame[]{}
/**
* @beta
**/
createMany(): DataFrame[] {}
}
```
````
## Deprecate an API
If you want to mark an API as deprecated to signal that this API will be removed in the future, then add the [`@deprecated`](https://api-extractor.com/pages/tsdoc/tag_deprecated/) tag.
If applicable add a reason why the API is deprecated directly after the `@deprecated tag`.
## Specify parameters
If you want to specify the possible parameters that can be passed to an API, then add the [`@param`](https://api-extractor.com/pages/tsdoc/tag_param/) tag.
This attribute can be skipped if the type provided by `typescript` and the function comment or the function name is enough to explain what the parameters are.
@@ -141,17 +145,17 @@ This attribute can be skipped if the type provided by `typescript` and the funct
/**
* Will help to create a resource resolver depending
* on the current execution context.
*
*
* @param context - The current execution context.
* @returns FileResolver if executed on the server otherwise a HttpResolver.
If you want to specify the return value from a function you can use the [`@returns`](https://api-extractor.com/pages/tsdoc/tag_returns/) tag.
This attribute can be skipped if the type provided by `typescript` and the function comment or the function name is enough to explain what the function returns.
@@ -181,17 +185,17 @@ This attribute can be skipped if the type provided by `typescript` and the funct
/**
* Will help to create a resource resolver depending
* on the current execution context.
*
*
* @param context - The current execution context.
* @returns FileResolver if executed on the server otherwise a HttpResolver.
@@ -119,7 +119,7 @@ If that is the case, then use the following format for headings:
- Assume all graphics will be exclusively viewed on the web.
- Maximum image size is 3840px X 2160px.
- Screenshots should be readable, but not too large.
- _Do not_ use image shortcodes. Follow the guidance in the [Grafana markdown guide](https://github.com/grafana/grafana/blob/main/contribute/style-guides/documentation-markdown-guide.md#images).
- _Do not_ use image shortcodes. Follow the guidance in [Markdown style guide](../documentation/documentation-markdown-guide.md#Images).
- Markdown image links are preferred. Only use the HTML image links if you need to style the image in ways unsupported in Markdown.
- When you name a file, follow the [file naming conventions](#file-naming-conventions). Example: image-name-7-3.png
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.