* Alerting: Remove double quotes from matchers
With #38629 a new Alertmanager configuration object was introduced with `object_matchers`, it was meant to circumvent around the fact that Prometheus label names don't support a set of characters that Grafana needs to support for alerts, silences, matchers, etc. (with a common example being elasticsearch's `.`).
This new object does not include the label of sanitzation or validation that its Prometheus equivalent supports in `matchers` and therefore are semantically not equivalent.
This triggered the problem that when the migration is run, we use `matchers` as the object to populate in configuration for routing policies, but when the UI does its first save this object is transformed to `object_matchers`.
Matchers that were previously running just fine would immediately stop working as soon as the configuration is saved.
This problem surfaced with the introduction of #49952 where we stopped stripping double quotes from matchers (not just regex but _all_ of them).
* Add comment explaining rationale and future removal
Co-authored-by: Alex Weaver <weaver.alex.d@gmail.com>
(cherry picked from commit 1a50b0dbb7)
Co-authored-by: gotjosh <josue.abreu@gmail.com>
* Add multi-value template variable support for log group names
* add test for multi-value template variable for log group names
* add test
(cherry picked from commit dca0453c2e)
Co-authored-by: Kevin Yu <kevinwcyu@users.noreply.github.com>
* AzureMonitor: Ensure original query properties are included unchanged (#49642)
* Ensure original query properties are included unchanged
* Remove refId from pseudo datasources
* Include testing for interpolateVariablesInQueries
- Add util function to create template variables
- Update mock query with missing props
- Additional tests on each ds for template variables
* Correct typo and add explicit check for datasource
(cherry picked from commit c8094b33cd)
# Conflicts:
# public/app/plugins/datasource/grafana-azure-monitor-datasource/azure_monitor/azure_monitor_datasource.test.ts
* Add missing prop
* Correctly encode default project response
* Make getGCEDefaultProject a method of Service and add test
* Handle error appropriately
* Update test and function definition
(cherry picked from commit ccb8888055)
Co-authored-by: Andreas Christou <andreas.christou@grafana.com>
* grant data source reader to all users when running oss or enterprise
without license
* fix asserts in alerting tests
* add oss licensing service for test setup
* fix tests to pass in enterprise
* lint
* fix tests
* set setting.IsEnterprise flag for tests
Co-authored-by: Yuriy Tseretyan <yuriy.tseretyan@grafana.com>
(cherry picked from commit 1796a1d277)
This fixes the issues that when a panel has multiple queries this throws an exception if source is not part of the current frame
Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
(cherry picked from commit eab806620c)
Co-authored-by: Ward Bekker <ward@wardbekker.com>
* If GroupMemver.Read.All permissions is not configured return no groups
* fix log
(cherry picked from commit 624f8ef40d)
Co-authored-by: Karl Persson <kalle.persson@grafana.com>
* Alerting: Fix access to alerts for viewer with editor permissions when RBAC is disabled (#49270)
* Add folder edit permission for users with Viewer role
* relax permissions required to create an alert when RBAC is disabled
(cherry picked from commit 3dfafbadef)
* fix backend conflict
* fixup
Co-authored-by: Yuriy Tseretyan <yuriy.tseretyan@grafana.com>
* Plugins: Fix Azure Devops plugin link and plugins list order
* tests added for plugins sorting
(cherry picked from commit f9d1d8370f)
Co-authored-by: Sriram <yesoreyeram@gmail.com>
* GrafanaUI: Fix color of links in input validation errors in light theme
* Change colors
(cherry picked from commit 426ca2999e)
Co-authored-by: Josh Hunt <joshhunt@users.noreply.github.com>
* introduce a fallback handler that checks that role is Viewer.
* update UI nav links to allow alerting tabs for anonymous user
* update rule api to check for Viewer role instead of SignedIn when RBAC is disabled
(cherry picked from commit f7f2253072)
* Update migration to migrate only alerts that belong to existing org\dashboard
(cherry picked from commit d87fdc1037)
Co-authored-by: Yuriy Tseretyan <yuriy.tseretyan@grafana.com>
* list azure devops as an enterprise plugin
* change base url to grafana.com/grafana/plugins and remove trailing slashes for consistency
(cherry picked from commit 5b52a1c391)
Co-authored-by: Brendan O'Handley <brendan.ohandley@grafana.com>
* Use saved dashboard model to create library panel connections when importing
* Rename variables in dashboard import for clarity
(cherry picked from commit 71e1305364)
Co-authored-by: Josh Hunt <joshhunt@users.noreply.github.com>
Manually tested with serve_from_sub_path = true and a custom pathUrl
(cherry picked from commit 0a44fbdd42)
Co-authored-by: Gilles De Mey <gilles.de.mey@gmail.com>
* Failing test case
* Compare numeric values not using collator
(cherry picked from commit 6a5a0e5770)
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
* Alerting: Provisioning GET routes for mute timings (#49044)
* Define GET routes and run codegen
* Wire up forked and non-generated API
* Implement and wire
* Tests, authorization
* Fix linter error
(cherry picked from commit 9af30f6570)
* ErrorContains -> Error, then Contains
Co-authored-by: Alexander Weaver <weaver.alex.d@gmail.com>
* Transformation: Added variance and standard deviation for sample and population. Modified mean calculation approach
* Transformation: Removed existing mean calculation
* Transformation: Added testcases for variance and Standard deviation
* Update docs/sources/panels/calculation-types.md
Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>
Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>
(cherry picked from commit 906484b809)
Co-authored-by: selvavm <selvavm@hotmail.com>
* Change dash permission check for dashboards that are moved to a different folder
(cherry picked from commit 6923b4c6c6)
Co-authored-by: Ieva <ieva.vasiljeva@grafana.com>
* RolePicker: Fix menu position on smaller screens
* RolePicker: Add comment
* Add offset for the bottom position
(cherry picked from commit 25b4aa8d86)
Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
* Alerting: Provisioning message templates (#48665)
* Generate API for writing templates
* Persist templates app logic layer
* Validate templates
* Extract logic, make set and delete methods
* Drop post route for templates
* Fix response details, wire up remainder of API
* Authorize routes
* Mirror some existing tests on new APIs
* Generate mock for prov store
* Wire up prov store mock, add tests using it
* Cover cases for both storage paths
* Add happy path tests and fix bugs if file contains no template section
* Normalize template content with define statement
* Tests for deletion
* Fix linter error
* Move provenance field to DTO
* empty commit
* ID to name
* Fix in auth too
(cherry picked from commit 0f56462fbe)
* ErrorContains -> Error then Contains
Co-authored-by: Alexander Weaver <weaver.alex.d@gmail.com>
* FileUpload: associate the label with the input
* generate a unique id and set the correct role
* add a test to prevent regressions
(cherry picked from commit 10db618204)
Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
* AzureMonitor: Add support for not equals and startsWith operators when creating Azure Metrics dimension filters. (#48077)
* Allow dimension operator selection
- Add dimension operators and function to update the operator in the query
- Add logic to ensure the same dimension cannot be selected multiple times (Azure restriction)
- Add selection component
* Update backend logic to default operation and filter to eq '*'
- This must be done as the ne and sw operators do not work with the wildcard filter
* Add tests on dimension operators
* Correct placement of 'and' when building query
* Add comment and simplify filtering logic
* Allow multiSelect for eq and ne operators
- Pass PanelData to DimensionFields component
- Add logic to retrieve labels from PanelData
- Add MultiSelect component for relevant operators
- Update frontend types to allow filter to be an array of strings
- Update backend types to allow filter to be an array of strings
- Update filter string building
* Improve setting of labels
* Update go tests
* Update frontend tests
- Add panelData mock (to be expanded later)
- Update null check in DimensionFields
* Allow custom value and set default
* Add frontend test and fix lint issues
* Improved handling of options for sw operator
* Remove changes related to multiselect
* Add check on refId to ensure dimension labels are correct for query
* Extract custom hook for setting dimension labels
* Add documentation around Azure Monitor metrics dimensions
* Update MetricQueryEditor tests
- Add missing data prop
* Correctly set field values
* Add additional expect for onQueryChange
* Correctly set operators
- Simplify onFilterInputChange
* Ensure no duplicate filters appear
* Ensure that filters are displayed correctly for saved queries
* Update dimension filter test
* Include additional test around changing dimension labels
(cherry picked from commit d7c16e06d2)
# Conflicts:
# public/app/plugins/datasource/grafana-azure-monitor-datasource/components/MetricsQueryEditor/MetricsQueryEditor.test.tsx
# public/app/plugins/datasource/grafana-azure-monitor-datasource/components/NewMetricsQueryEditor/MetricsQueryEditor.test.tsx
# public/app/plugins/datasource/grafana-azure-monitor-datasource/components/NewMetricsQueryEditor/MetricsQueryEditor.tsx
# public/app/plugins/datasource/grafana-azure-monitor-datasource/components/QueryEditor/QueryEditor.tsx
* Update test for older testing-library version
* add response type text to graphite datasource http options to return full list of functions
* add comment for adding response type text to call to graphite /functions endpoint
* Add tests for invalid and valid JSON mocking backendSrv fromFetch
* remove unnecessary code from tests
* remove extra logic for graphite /functions endpoint returning {} #46681
* add graphite functions list logic back in to see why alert test broke
* fix conflict message
* fix conflicts
* fix issues with rebase, add responseType text back in, remove extra graphite functions list logic checks
* add email for license/cla check
(cherry picked from commit 4867a6b15f)
Co-authored-by: Brendan O'Handley <brendan.ohandley@grafana.com>
* refactor: replace uses of checked prop for <Switch> with value prop
* fix: remove spaces from ids
The ID format is stated as follows([source][1]):
> ID and NAME tokens must begin with a letter ([A-Za-z]) and may be followed by any number of letters, digits ([0-9]),
hyphens ("-"), underscores ("_"), colons (":"), and periods (".").
Since `QueryHeaderSwitch` is used in two places I created a new variable that replaces spaces with a dash in the label.
[1]: https://www.w3.org/TR/html401/types.html#type-name
* fix: allow Switch in AlertingSettings to be focused by keyboard
* fix: allow Switch in PromSettings to be focused by keyboard
Fixes#46472
Co-authored-by: Elfo404 <me@giordanoricci.com>
(cherry picked from commit c57924e332)
Co-authored-by: Adam Simpson <adam@adamsimpson.net>
* Alerting: add safeguard for migrations that might cause dataloss
* add test for panic
* add documentation
(cherry picked from commit 0a87ef06af)
Co-authored-by: Jean-Philippe Quéméner <JohnnyQQQQ@users.noreply.github.com>
* Get golang to find an open port for us
* Update pkg/tests/api/alerting/api_notification_channel_test.go
Co-authored-by: gotjosh <josue.abreu@gmail.com>
* Fix merge
Co-authored-by: gotjosh <josue.abreu@gmail.com>
(cherry picked from commit a96510d03c)
Co-authored-by: Alexander Weaver <weaver.alex.d@gmail.com>
* AzureAd Oauth: Fix strictMode to reject users without an assigned role
Signed-off-by: kyschouv <kyschouv@microsoft.com>
* AzureAd OAuth: Add test for strictMode auth when no role claims are returned
Signed-off-by: kyschouv <kyschouv@microsoft.com>
(cherry picked from commit 7b224adf9f)
Co-authored-by: Kyle Schouviller <kyschouv@microsoft.com>
* Alerting: Add provisioning GET routes for message templates (#48367)
* Template service
* Add GET routes and implement them
* Generate mock for persist layer
* Unit tests for reading templates
* Set up composition root and get integration tests working
* Fix prealloc issue
* Extract setup boilerplate
* Update AuthorizationTest
* Rebase and resolve
* Fix linter error
(cherry picked from commit 735822e48a)
* Avoid latest require features
Co-authored-by: Alexander Weaver <weaver.alex.d@gmail.com>
* Fix bug where resource picker doesn't open automatically to a previously selected resource.
(cherry picked from commit ebfb70dc12)
Co-authored-by: Sarah Zinger <sarah.zinger@grafana.com>
Invalid PostableSilences could be passed to the Alerting API - if they
are passed all the way down into the alertmanager data layer, they can
cause a panic. This change adds validation to avoid a panic in the
alertmanager.
(cherry picked from commit 103087a1a5)
Co-authored-by: Joe Blubaugh <joe.blubaugh@grafana.com>
* Explore Split Logs - use unique IDs and save state vals to unique place
* Remove exploreID from store
(cherry picked from commit a320e942a6)
Co-authored-by: Kristina <kristina.durivage@grafana.com>
Adds some styling (default hyperlink color and underline on hover) to
plugin header and body hyperlinks.
Fixes#48078
(cherry picked from commit 199cacc7b6)
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
* Alerting: Create fewer contact points on migration
Previously a new contact point was created for every unique combination
of channels attached to any legacy alert. This was very hard to maintain,
requiring modifications in every generated contact point.
This change deduplicates the generated contact points to a more
reasonable state. There should now only be one contact point per legacy
channel, and we attached multiple contact points to a route by nesting
them. The sole exception to this is if there were multiple default
legacy channels, in which case we create a redundant contact point
containing all of them used only in the root policy. This allows for a
much simpler notification policy structure.
Co-authored-by: gotjosh <josue.abreu@gmail.com>
(cherry picked from commit 0301d956da)
* Test composition simplification from last PR
* Policies use proper API model everywhere
* Expose policy provenance in API, miss some dep injection
* Complete injection
* fix args
* Tests for provenance value
* Extract test helpers so tests are very readable
* Single source adapter struct that was copied in 3 places
* Drop redundant test
* Resolve merge conflicts on changelog
(cherry picked from commit 8310789ef1)
Co-authored-by: Alexander Weaver <weaver.alex.d@gmail.com>
* Alerting: Refactor GET/POST alerting config routes to be more extensible (#47229)
* Refactor GET am config to be extensible
* Extract post config route
* Fix tests
* Remove temporary duplication
* Fix broken test due to layer shift
* Fix duplicated error message
* Properly return 400 on config rejection
* Revert weird half method extraction
* Move things to notifier package and avoid redundant interface
* Simplify documentation
* Split encryption service and depend on minimal abstractions
* Properly initialize things all the way up to the composition root
* Encryption -> Crypto
* Address misc feedback
* Missing docstring
* Few more simple polish improvements
* Unify on MultiOrgAlertmanager. Discover bug in existing test
* Fix rebase conflicts
* Misc feedback, renames, docs
* Access crypto hanging off MultiOrgAlertmanager rather than having a separate API to initialize
(cherry picked from commit 758364e78b)
* Empty commit to kick PR build
Co-authored-by: Alexander Weaver <weaver.alex.d@gmail.com>
* NodeGraph: Detect dataframes more accurately based on fields
* Make get fields case insensitive
* Update node graph docs
(cherry picked from commit 939a778111)
* CloudWatch: prevent log groups from being removed on query change.
Previously when a query was changed the existing log groups for that query were "dropped". The fix is to combine the
new query with the existing query object in memory to preserve the log groups.
fixes#33626
* CloudWatch: fix typos in runWithRetry documentation
* chore: fix eslint issue
(cherry picked from commit 6c0a5b121e)
Co-authored-by: Adam Simpson <adam@adamsimpson.net>
* Remove specific stats from usage stats service
* Create statscollector service
* refactor
* Update and move tests
Mostly equivalent tests to before, but they've been divided over the two
services and removed the behavior driven legacy from GoConvey to
reduce the complexity of the tests.
* Collect featuremgmr metrics (copied over from #47407)
I removed the metrics registration from the feature manager in the merge
and re-add them in this commit. Separated to make things easier to
review.
(cherry picked from commit 3df625e9f4)
Co-authored-by: Emil Tullstedt <emil.tullstedt@grafana.com>
* refactor RBAC checks
* fix a test
* another test fix
* and another
(cherry picked from commit 68ca5b2e05)
Co-authored-by: Ieva <ieva.vasiljeva@grafana.com>
This commit adds a new method GetRuleGroups to RuleStore which returns the set of rule groups across all organizations.
(cherry picked from commit d66fc6ed1a)
Co-authored-by: George Robinson <george.robinson@grafana.com>
* Updated image size.
* Few more resizing. Also, added link for signup for beta testing (nav bar).
* Few minor tweaks
* Fixed a typo
(cherry picked from commit 75d528d7bd)
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
* Docs: Remove 'Reference' prefix from all reference topic filenames: Per issue #46818, prefixing reference topics with "Reference" can damage usability. Remove the prefix from filenames.
* Docs: Remove "Reference:" prefix from titles and ToC headings: Per issue #46818, prefixing reference topics with "Reference" can damage usability. Remove the prefix from titles and ToC headings. H1s retain the prefix to emphasize the nature of the doc without affecting the docs' discoverability.
* Docs: Move Transformation functions reference alongside Transformation docs
* Docs: Update links to reference docs in Transformation docs
* Docs: Update links to reference docs in Panels docs
* Docs: Update links to query options reference across docs
* Docs: Update links to standard field definitions reference across docs
* Docs: Update links to calculation types reference across docs
* Docs: Update links to transformation functions reference across docs
* Docs: Rename apply transformation doc filename to add transformation
* Docs: Rename apply transformation doc to add transformation
* Docs: Update links to add transformation doc across docs
* Docs: Update relrefs in Transformation functions reference
(cherry picked from commit d93bcd547e)
Co-authored-by: Garrett Guillotte <100453168+gguillotte-grafana@users.noreply.github.com>
* refactor: renaming service-accounts to serviceAccounts
* refactor: renaming service-accounts to serviceAccounts in docs
* tests
(cherry picked from commit 8677552dda)
Co-authored-by: Eric Leijonmarck <eric.leijonmarck@gmail.com>
Adds tests for:
what circumstances should trigger alert migration from legacy alerting to unified alerting.
the execution of the migration itself.
Co-authored-by: gotjosh <josue.abreu@gmail.com>
Co-authored-by: Matthew Jacobson <matthew.jacobson@grafana.com>
* parse exemplars before parsing the heatmap. Exemplars are overlayed. Not part of the main heatmap
* added tests
(cherry picked from commit 222325c7f1)
Co-authored-by: Stephanie Closson <srclosson@gmail.com>
* Additional logic to handle quoted values
* Simple test with quoted values that include spaces
* Update test description
* Updating logic to account for nested quotes
- Adding additional test for nested quotes
* Strip out line breaks and carriage returns pre-processing
* Fix typo in test result
* Update key-value logic to avoid regexp
- Minor changes to account for null values
* Correct escaping on test
* Additional tests
- Test for null values
- Test for nested separator characters
- Update quoting
(cherry picked from commit d0b41f882e)
Co-authored-by: Andreas Christou <andreas.christou@grafana.com>
Before this change, notifications generated by the Grafana Alertmanager
pointed to '/alerting/:ruleID/edit'. This change instead points them to
the view path '/alerting/grafana/:ruleID/view'. The view page has a
better UX, including timeseries display. It's also where many alert
state improvements will land in the next few versions of Grafana.
Fixes#45301
Signed-off-by: Joe Blubaugh <joe.blubaugh@grafana.com>
(cherry picked from commit 3d91047e6e)
Co-authored-by: Joe Blubaugh <joe.blubaugh@grafana.com>
* Move count_values from function to aggregation
* Fix typos
* Fix loki operations
* Fix error that change the aggregation variant on blur
* Fix loki ops
(cherry picked from commit 95009995e4)
Co-authored-by: Andrej Ocenas <mr.ocenas@gmail.com>
* Update API Keys UI to adjust based on users permissions
Since API Keys support now RBAC we need to ensure that UI
is adjusted based on the user permissions.
* Applying PR suggestions
(cherry picked from commit cbd2d09d70)
Co-authored-by: Vardan Torosyan <vardants@gmail.com>
* Remove makefile (it's not used anymore)
* Directly download and install nodejs package
The Packages file for deb.nodesource.com/node_16.x doesn't list older
versions, so only the most recent version of nodejs is available. We
don't want to require every update to the build container to have to
update nodejs if a never version is available, so I manually download
the deb and install it with dpkg.
* Update Go version
* Update lib.star
* Generate new .drone.yml
(cherry picked from commit 24038d9985)
Co-authored-by: Emil Tullstedt <emil.tullstedt@grafana.com>
For a proxied request, e.g. Grafana's datasource or plugin proxy:
If the request is cancelled, e.g. from the browser, the HTTP status code is
now 499 Client closed request instead of 502 Bad gateway.
If the request times out, e.g. takes longer time than allowed, the HTTP status
code is now 504 Gateway timeout instead of 502 Bad gateway.
This also means that request metrics and logs will get their status codes
adjusted according to above.
Fixes#46337Fixes#46338
(cherry picked from commit 4bc582570e)
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
* Improve new alert and new silence buttons permission handling
* Prevent loading alert rules when no sufficient permissions provided
* Improve add and edit rule permissions
* Add new rule CTA button for non-editors
* Update mock
* Fix imports
(cherry picked from commit 785145c045)
Co-authored-by: Konrad Lalik <konrad.lalik@grafana.com>
* modify matchers util for instances
* filter alerts
* change label to include instances
* re add empty case
(cherry picked from commit 4570615afc)
Co-authored-by: Peter Holmberg <peterholmberg@users.noreply.github.com>
* Update documentation for the query builder
* Review feedback
* Update docs and add pictures
(cherry picked from commit 378ce4f685)
Co-authored-by: Andrej Ocenas <mr.ocenas@gmail.com>
PR #47674 attempted to sort a read-only managed async array. This change
moves the sort logic to the fetch code so sort happens once on fetch, to
a mutable array, rather than trying on each render for an immutable
array.
Signed-off-by: Joe Blubaugh <joe.blubaugh@grafana.com>
(cherry picked from commit 7d5cb170c6)
Co-authored-by: Joe Blubaugh <joe.blubaugh@grafana.com>
* Create fixed roles for reading API Keys and service accounts
* Handle PR comments and fix the listing of token
(cherry picked from commit 782ec05d8c)
Co-authored-by: Vardan Torosyan <vardants@gmail.com>
* Cloudwatch: add test to ensure RunQuery is fired onBlur of LogQuery
Also remove the `onBlur` prop for the `QueryField` in `LogsQueryField` since `QueryField` is configured to re-run
queries `onBlur` by default.
Co-authored-by: Sarah Zinger <sarah.zinger@grafana.com>
Co-authored-by: Isabella Siu <isabella.siu@grafana.com>
Co-authored-by: Adam Simpson <adam@adamsimpson.net>
(cherry picked from commit 4f26129aa4)
Co-authored-by: Shirley <4163034+fridgepoet@users.noreply.github.com>
* Add new alert rule to alerting section
* Check access control for ability to create
(cherry picked from commit 7905957ee8)
Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
* WIP
* fix: bug for saving name did not remove edit
* refactor: better error msg
* Display the column Roles even when user can't see the role picker
* Remove spaces when building the search query request
* Disable Edit button and fix token addition and deletion
* Fix the error message text
Co-authored-by: Vardan Torosyan <vardants@gmail.com>
(cherry picked from commit b43e9b50b4)
Co-authored-by: Eric Leijonmarck <eric.leijonmarck@gmail.com>
* use common traceID context value for opentracing and opentelemetry
* support sampled trace IDs as well
* inject traceID into NormalResponse on errors
* Finally the test passed
* fix the test
* fix linter
* change the function parameter
Co-authored-by: Ying WANG <ying.wang@grafana.com>
(cherry picked from commit 41012af997)
Co-authored-by: Serge Zaitsev <serge.zaitsev@grafana.com>
* Alerting: unwrap upsert into insert and update function
* add changelog entry
* remove changelog entry
* rename upsertrule to updaterule
* use directly alertrule model for inserts
* add test for updating a rule with a conflicting name
(cherry picked from commit 060ccacbf9)
Co-authored-by: Jean-Philippe Quéméner <JohnnyQQQQ@users.noreply.github.com>
* add check for access to rule's data source in GET APIs
* use more general method GetAlertRules instead of GetNamespaceAlertRules.
* remove unused GetNamespaceAlertRules.
Tests:
* create a method to generate permissions for rules
* extract method to create RuleSrv
* add tests for RouteGetNamespaceRulesConfig
(cherry picked from commit af9353caec)
Co-authored-by: Yuriy Tseretyan <yuriy.tseretyan@grafana.com>
* forbid setting role higher than user's role
* change response code
* can assign API key permissions to non-admin users
* add: assign viewer role directly upon creation
* refactor: add AddSATcommand infavor of AddAPIkey
* refactor: frontend fixes for ServiceAccountToken
Co-authored-by: eleijonmarck <eric.leijonmarck@gmail.com>
(cherry picked from commit a245531f0c)
Co-authored-by: Ieva <ieva.vasiljeva@grafana.com>
* Add permission check to the find route, add query not accessible warning for the view page
* Hide grafana or mimir rule buttons depending on user's permissions
* Add grafana and cloud read rules checking on the alert rules list view
* Improve missing data source handling, refactor edit and remove permissions handling
* Add tests for rule edit permissions
* PR feedback
(cherry picked from commit a30ab51550)
Co-authored-by: Konrad Lalik <konrad.lalik@grafana.com>
* chore: bump moment to 2.29.2
* chore(yarn): clean up remaining moment nested deps
(cherry picked from commit c3db3121b0)
Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>
* Chore: remove bus from contexthandler
* remove bus from orgredirect
(cherry picked from commit 2cf88cfec8)
Co-authored-by: Serge Zaitsev <serge.zaitsev@grafana.com>
* Nav: Show overlay icons based on allowed list
* user essentials mob! 🔱
* Navigation: clean up and use new backend prop to show plus icons and
improve visual styling
* Nav: Fix top padding
* refactor to not use showIconInNavbar in NavBarMenuItem
* remove a missed bit
* refactor icon into const
Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
(cherry picked from commit 85de0d88c7)
Co-authored-by: Maria Alexandra <239999+axelavargas@users.noreply.github.com>
* chore: remove all remaining uses of golang.org/x/net/context
This PR finishes the work started in #47532, replacing all calls to that package with the stdlib context and using http.NewRequestWithContext to include the context where necessary.
Bonus: small formatting fixes to goimports in these files.
closes#44178
* tweak: use context.Background in favor of TODO for tests
(cherry picked from commit 8f6877e12a)
Co-authored-by: Kristin Laemmert <mildwonkey@users.noreply.github.com>
* Chore: Remove bus from alerting rule
* fix alerting tests
* fix provide service
(cherry picked from commit b31c7d3654)
Co-authored-by: Serge Zaitsev <serge.zaitsev@grafana.com>
* Chore: Remove bus from dashboards provisioning
* fix symlink test, make it run on darwin
* remove unused mock
(cherry picked from commit ad432108e6)
Co-authored-by: Serge Zaitsev <serge.zaitsev@grafana.com>
* Select: Expose AsyncSelectProps interface
* DashboardPicker: Add a generic DashboardPicker component
* Dashboard Service: improve types
* Explore: allow saving explore state in a new panel in an existing dashboard
* Handle saving provisioned dashboards error
* Improve test coverage
* simplify test setup
* Strip base path from url when redirecting to a dashboard
* Keep existing variables when saving to an existing dashboard
* group assertions in test
* SearchCard: handle undefined in meta.updated
* Change required error message
* Add to dashboard alternative
* Add to existing is working
* Add to dashboard form
* remove default add-panel when creating a dashboard from explore
* types cleanup
* remove unneeded BE change
* simplify selector
* Add explore2Dashboard feature toggle
* add tests
* Small refactor & add tests
* small DashboardPicker improvements
* use partial from lodash
* Better error handling
* improve tests & disable button when there are no queries
* rename addPanelToDashboard function
* remove localStorage item if opening tab fails
* UI touchups & tracking
* Fix tests & remove close reporting
* remove echologger debug
* fix adding a panel to an existing dashboard
* Enable explore2Dashboard by default and add docs
* Ensure each panel in dashboards has a valid ID
* force CI restart
Co-authored-by: Elfo404 <me@giordanoricci.com>
(cherry picked from commit 7181efd1cf)
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
This change makes it explicit in the UI that a notification policy with no matching labels matches all alerts that it processes. There are visual changes in both the Notification Policy editor, and in the Notification Policy table where matching columns are shown.
It's valid to have a notification policy with no label matchers attached. Such a policy matches all alerts sent to it. It's a common stumbling block for users. Where are all my alerts going?
Co-authored-by: gillesdemey <gilles.de.mey@gmail.com>
(cherry picked from commit 51c98b182d)
Co-authored-by: Joe Blubaugh <joe.blubaugh@grafana.com>
* add caveats for general folder
* expand the list of resources covered by fgac
* Update folder.md
remove unneeded comment
(cherry picked from commit a5530d36a7)
Co-authored-by: Ieva <ieva.vasiljeva@grafana.com>
* Chore: Remove bus from contexthandler
* fix tests
* try different wire binding
* maybe remove a few more dispatches
* fix tests
(cherry picked from commit d153d896c5)
Co-authored-by: Serge Zaitsev <serge.zaitsev@grafana.com>
* Explore/Logs: Clarify phrasing of newline escape fix tooltip
Rewrite the tooltip for the smart feature in PR #31352 that
replaces incorrectly escaped newlines in log lines.
- Clarify the functionality of the feature to emphasize its
interactivity.
- Remove language suggesting that the feature is experimental,
when we intended to suggest reviewing the results manually for
correctness.
* Docs: Document escape newlines feature
Describe and provide steps for using the "Escape newlines" feature
in Explore added in PR #31352.
* Rewrite topic lead to clarify conditional behavior
* Describe reversion of replacements as a standalone task
Reverting the replacements is a separate action, so it should have
its own task. This also describes the option's transformation and
tightens the task language.
* Remove Grafana 7 version qualifier
* Clarify escape sequence detection lede on task
Co-authored-by: Fiona Artiaga <89225282+GrafanaWriter@users.noreply.github.com>
* Clarify "Remove escaping" state change
Co-authored-by: Fiona Artiaga <89225282+GrafanaWriter@users.noreply.github.com>
* Clarify confidence of tooltip content
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
Co-authored-by: Fiona Artiaga <89225282+GrafanaWriter@users.noreply.github.com>
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
(cherry picked from commit 42431e6ad4)
Co-authored-by: Garrett Guillotte <100453168+gguillotte-grafana@users.noreply.github.com>
* move validation at the beginning of method
* remove usage of GetOrgRuleGroups because it is not necessary. All information is already available in memory.
* remove unused method
(cherry picked from commit 48519f9ebb)
Co-authored-by: Yuriy Tseretyan <yuriy.tseretyan@grafana.com>
This PR removes golang.org context imports under pkg/services/* and replaces them with the stdlib context.
Closes#44178
(cherry picked from commit bda3dd24e4)
Co-authored-by: Kristin Laemmert <mildwonkey@users.noreply.github.com>
* pass in user to attribute scope resolver
* add SQL filter to annotation listing
* check annotation FGAC permissions before exposing them for commenting
* remove the requirement to be able to list all annotations from annotation listing endpoint
* adding tests for annotation listing
* remove changes that got moved to a different PR
* unused var
* Update pkg/services/sqlstore/annotation.go
Co-authored-by: Ezequiel Victorero <evictorero@gmail.com>
* remove unneeded check
* remove unneeded check
* undo accidental change
* undo accidental change
* doc update
* move tests
* redo the approach for passing the user in for scope resolution
* accidental change
* cleanup
* error handling
Co-authored-by: Ezequiel Victorero <evictorero@gmail.com>
(cherry picked from commit ef4c2672b3)
Co-authored-by: Ieva <ieva.vasiljeva@grafana.com>
* Add some failing tests that trigger the bug
* start at refactor of stripBaseFromUrl
(cherry picked from commit 416da59c43)
Co-authored-by: Josh Hunt <joshhunt@users.noreply.github.com>
* Apply FGAC on the alert rules list page
* Add tests for edit, delete and silence buttons
* Unify access-control helpers
* Fix import
* Add route permissions for alert groups, unify access control helpers
* Improve buttons with data source explore permission
* Fix test
(cherry picked from commit 87383b1c8b)
Co-authored-by: Konrad Lalik <konrad.lalik@grafana.com>
* TestData: Interpolate variables in more fields
* only interpolate variables if the field is set
* Correctly type scenarioId which can be undefined
(cherry picked from commit b857f8339e)
Co-authored-by: Josh Hunt <joshhunt@users.noreply.github.com>
* add aria-label to NavBarToggle
* use open/close instead
(cherry picked from commit d95782845d)
Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
* add FGAC actions for silences table
* redirect users without permissions
* add permissions checks to routes
* add fgac to notifications and contact points
* fgac for notification policies
* fix mute timing authorization
* use consistent naming for checking grafana alertmanager
* tests for fgac in contact points and notification policies
* bump up timeout on rule editor test
* use new permissions util
* break out route evaluation into util
* Remove test timeout
* Change permissions for the alert-notifiers endpoint
* Use signed in handler for alert-notifiers when unified alerting enabled
Co-authored-by: Konrad Lalik <konrad.lalik@grafana.com>
(cherry picked from commit 49505b9a3b)
Co-authored-by: Nathan Rodman <nathanrodman@gmail.com>
* navigation: implement proper mobile menu
* Update public/app/core/components/NavBar/Next/NavBarMenu.tsx
Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>
* animation feedback
Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>
(cherry picked from commit 04c037b2cb)
Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
* Load Rich History when the container is opened
* Store rich history for each pane separately
* Do not update currently opened query history when an item is added
It's impossible to figure out if the item should be added or not, because filters are applied in the backend. We don't want to replicate that filtering logic in frontend. One way to make it work could be by refreshing both panes.
* Test starring and deleting query history items when both panes are open
* Remove e2e dependency on ExploreId
* Fix unit test
* Assert exact queries
* Simplify test
* Fix e2e tests
* Fix toolbar a11y
* Reload the history after an item is added
* Fix unit test
* Remove references to Explore from generic PageToolbar component
* Update test name
* Fix test assertion
* Add issue item to TODO
* Improve test assertion
* Simplify test setup
* Convert steps to run on OSS repo only
* Exclude versioned branches from publishing artifacts
* Change trigger -> when
* Add trigger to upload_* steps
* Add conditions to remaining steps
* Exclude release steps
* Bring back exclusion for release builds
* AccessControl: Remove package variables for roles and grants
Co-authored-by: Jguer <joao.guerreiro@grafana.com>
* Check for inheritance during role registration
Co-authored-by: Jguer <joao.guerreiro@grafana.com>
* Moving back role definition to accessscontrol
* Make settings reader role public
Co-authored-by: Jguer <joao.guerreiro@grafana.com>
* Nits
Co-authored-by: Jguer <joao.guerreiro@grafana.com>
* Forgot to update this
* Account for declaration error
* Fixing pkg/api init ossac
* Account for error in tests
* Update test to verify inheritance
* Nits.
* Place br inheritance behind a feature toggle
* Parent -> Parents
* Nit.
Co-authored-by: Jguer <joao.guerreiro@grafana.com>
* Clean up orgId when user organization is removed
* Add a test for removing user org
* Fix linting errors
* Update comment
* Fix linting errors
* Make removing user org more explicit
* Use Wiring to initialize Avatar Cache Server
Create AvatarCacheServer Provider function and pass it in as an
argument to HTTPServer. Also convert CacheServer to a singleton
so that we keep all cached Avatar info in one place for easier access
* Refactor avatar cache server and add 'isCustom' check
Avatar cache server needs to perform two similar fetches
back-to-back; break up functions to allow for easy reuse.
Then add handling to see if a user has a custom avatar.
* Add additional accessors so that /recents api can easily use the cache
* Minor mods to avatar server to facilitiate unit testing
* add unit tests for avatar fetching
* add error handling in case we somehow fetch gravatars while they are disabled
* linting: read error return value in unit test
* Use http package status codes
Co-authored-by: Ezequiel Victorero <evictorero@gmail.com>
* Use http package status codes
Co-authored-by: Ezequiel Victorero <evictorero@gmail.com>
* Use http package status codes
Co-authored-by: Ezequiel Victorero <evictorero@gmail.com>
* Incorporate suggestions from PR
-avoid mutating arguments
-change error handler function to private and make name more descriptive
Co-authored-by: Ezequiel Victorero <evictorero@gmail.com>
* Base-line API for provisioning notification policies
* Wire API up, some simple tests
* Return provenance status through API
* Fix missing call
* Transactions
* Clarity in package dependencies
* Unify receivers in definitions
* Fix issue introduced by receiver change
* Drop unused internal test implementation
* FGAC hooks for provisioning routes
* Polish, swap names
* Asserting on number of exposed routes
* Don't bubble up updated object
* Integrate with new concurrency token feature in store
* Back out duplicated changes
* Remove redundant tests
* Regenerate and create unit tests for API layer
* Integration tests for auth
* Address linter errors
* Put route behind toggle
* Use alternative store API and fix feature toggle in tests
* Fixes, polish
* Fix whitespace
* Re-kick drone
* Rename services to provisioning
* Alerting: Accurately set value for prom-compatible APIs
Sets the value fields for the prometheus compatible API based on a combination of condition `refID` and the values extracted from the different frames.
* Fix an extra test
* Ensure a consitent ordering
* Address review comments
* address review comments
* adds oauth support to call resource requests
* adds oauth docs for call resource
* fixes case where dsUID is empty
* improve datasource error handling
The table had in two rows an additional column. It was breaking the markdown formatting. The unused column has been removed and the table is displayed correctly now.
* Fix inherited scopes for dashboard to use folder uid
* Add inherited evaluators
* Slight modification of the commments
* Add test for inheritance
* Nit.
* extract shared function from tests
* Nit. Extra line
* Remove unused comment
Co-authored-by: Karl Persson <kalle.persson@grafana.com>
Co-authored-by: gamab <gabi.mabs@gmail.com>
* Update dependency moveable to v0.28.0
* Update yarnrc file as well
Co-authored-by: Renovate Bot <bot@renovateapp.com>
Co-authored-by: Zoltán Bedi <zoltan.bedi@gmail.com>
* Add basic UI for custom ruler URL
* Add build info fetching for alerting data sources
* Add keeping data sources build info in the store
* Use data source build info to construct data source urls
* Remove unused code
* Add custom ruler support in prometheus api calls
* Migrate actions
* Use thunk condition to prevent multiple data source buildinfo fetches
* Unify prom and ruler rules loading
* Upgrade RuleEditor tests
* Upgrade RuleList tests
* Upgrade PanelAlertTab tests
* Upgrade actions tests
* Build info refactoring
* Get rid of lotex ruler support action
* Add prom ruler availability checking when the buildinfo is not available
* Add rulerUrlBuilder tests
* Improve prometheus data source validation, small build info refactoring
* Change prefix based on Prometheus subtype
* Use the correct path
* Revert config routing
* Add deprecation notice for /api/prom prefix
* Add tests to the datasource subtype
* Remove custom ruler support
* Remove deprecation notice
* Prevent fetching ruler rules when ruler api is not available
* Add build info tests
* Unify naming of ruler methods
* Fix test
* Change buildinfo data source validation
* Use strings for subtype params and unveil mimir
* organise imports
* frontend changes and wordsmithing
* fix test suite
* add a nicer verbose message for prometheus datasources
* detect Mimir datasource
* fix test
* fix buildinfo test for Mimir
* shrink vectors
* add some code documentation
* DRY prepareRulesFilterQueryParams
* clarify that Prometheus does not support managing rules
* Improve buildinfo error handling
Co-authored-by: gotjosh <josue.abreu@gmail.com>
Co-authored-by: gillesdemey <gilles.de.mey@gmail.com>
* no other tab has title
* made Add service button not visable and upper right
* renaming and added space between token number
* aligned button (:css:)
* refactor: out component listitem
* unused import
* CloudWatch: Handle new error codes for MetricInsights
* Changes/test to support case where only the first GetMetricDataOutput returns errors and refactoring
* Fix Potential file inclusion via variable
* Fix gosec 304 by assigning a new variable
* fix goimports issue
.substr() is deprecated so we replace it with .slice() which works similarily but isn't deprecated
Signed-off-by: Tobias Speicher <rootcommander@gmail.com>
* make eval.Evaluator an interface
* inject Evaluator to TestingApiSrv
* move conditionEval to RouteTestGrafanaRuleConfig because it is the only place where it is used
* update rule test api to check data source permissions
* Use alert:create action for folder search with edit permissions. This matches the action that is used to query dashboards (the update will be addressed later)
* Update rule store to use FindDashboards instead of folder service to list folders the user has access to view alerts. Folder service does not support query type and additional filters.
* Do not check whether the user can save to folder if FGAC is enabled because it is checked on API level.
* Do not run CodeQL analysis when updating .cue file
* Remove autobuild step for CodeQL workflow as unecessary
* Add specialized CodeQL workflow
* Updated main CodeQL workflow to not run on PRs
* Simplify CodeQL analysis on PR
* Add .tsx file format to JS CodeQL analysis match
* Azure Monitor: allow metrics call to use resource uri
* test case when only resource uri is provided
* remove logs
* Rename json field name from resource to resourceUri
* Group legacy URL builder params test cases
* move comment to the correct position
* Add clarifications in comments
Co-authored-by: Sarah Zinger <sarah.zinger@grafana.com>
Co-authored-by: Sarah Zinger <sarah.zinger@grafana.com>
FilterInput escapes all input strings for special characters that might
be used in a RegExp by calling escapeStringForRegex, and using
unEscapeStringFromRegex for display. Both of these functions used
string.prototype.replace() for escaping. replace() only replaces the
first occurence of a search string unless called with a global RegExp.
The output of these functions was not necessarily safe to compile into a
RegExp literal.
This change creates RegExps for escapeStringForRegex and
unEscapeStringFromRegex to match all occurrences of the special
characters instead of just their first occurrence. This makes a variety
of strings safe for RegExp compilation.
* AccessControl: Add a feature flag for the builtin role simplification
Co-authored-by: Jguer <joao.guerreiro@grafana.com>
* Update standardDeatureFlags instead
Co-authored-by: Jguer <joao.guerreiro@grafana.com>
* Create parser
* Add parsing
* Update comment
* Remove operations that we don't support
* Resolve type errors
* Update test
* Handle backticks
* Handle backticks
* Remove copied test, update test
* Parsing for binary operations
* Remove error about setting state after unmount
Co-authored-by: Andrej Ocenas <mr.ocenas@gmail.com>
* Next/prev buttons
* expand
* Sticky search bar
* Removed anys
* testing
* testing
* Tests for next/prev/suffix
* More tests
* Span bar row color
* Add clear to input and update search bar styles
* Update test
* PR changes
Co-authored-by: Connor Lindsey <cblindsey3@gmail.com>
* use uid:s for folder and dashboard permissions
* evaluate folder and dashboard permissions based on uids
* add dashboard.uid to accept list
* Check for exact suffix
* Check parent folder on create
* update test
* drop dashboard:create actions with dashboard scope
* fix typo
* AccessControl: test id 0 scope conversion
* AccessControl: store only parent folder UID
* AccessControl: extract general as a constant
* FolderServices: Prevent creation of a folder uid'd general
* FolderServices: Test folder creation prevention
* Update pkg/services/guardian/accesscontrol_guardian.go
* FolderServices: fix mock call expect
* FolderServices: remove uneeded mocks
Co-authored-by: jguer <joao.guerreiro@grafana.com>
* Binary ops support
* Add support for nested expressions in loki
* Nested queries working
* Fixing tests
* Share more code between loki and prometheus query modellers
* Expose option to disable help menu
* Expose option to disable profile menu
* Add Profile FeatureTogglePage
* Update public/app/features/profile/FeatureTogglePage.tsx
Uptake PR wording suggestion.
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
* Fix front end lint issue
* Fix back end lint issue
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
* Ensure TemplateService is updated with new time range on each time range change.
* Fix linting errors
* Fix explorePane.test.ts
* Reuse createDefaultInitialState
* Remove unused imports
* Add a test for left/right split
* Silence console.error in tests
* Silence console.error in tests
* feat: Bar Gauge Support scrolling
* Update public/app/plugins/panel/bargauge/module.tsx
Co-authored-by: Ashley Harrison <ashharrison90@gmail.com>
* Update public/app/plugins/panel/bargauge/module.tsx
Co-authored-by: Ashley Harrison <ashharrison90@gmail.com>
* docs: Bar gauge add 'min-width' and 'min-height'
Co-authored-by: Ashley Harrison <ashharrison90@gmail.com>
* __unixEpochGroup to support arithmetic argument
Following call generates wrong expression :
$__unixEpochGroupAlias(height+42,$__interval)
=> floor(height+42/60)*60 AS "time"
instead of
=> floor((height+42)/60)*60 AS "time"
* Update test of __unixEpochGroup related to issue #46764
* Dashboard: Fixes save modal rendered ontop of save drawer
* removed commented line
* Simplified dismiss -> hideModal mapping
* Fixed issue with new dashboard
* Fixing issues
* require legacy Editor for post, put, delete endpoints
* require user to be signed in on group level because handler that checks that user has role Editor does not check it is signed in
* verify that the user has access to all data sources used by the rule that needs to be deleted from the group
* if a user is not authorized to access the rule, the rule is removed from the list to delete
* Add history listener to update titleHref/parentHref when location changes
* Convert to functional component and use useLocation
* Wrap component in React.memo
* Add new `getUrlForPartial` method, deprecate `updateSearchParams`
* Add ResourceAttribute
* Add ResourceAttribute option
* Set ResourceAttribute option
* Change resolvers to return uid based scopes
* update swagger to correct scope
* use ResourceAttribute for endpoint scope
* bump role version
* Add support for different attributes for access control metadata
* evaluate data source metadata based on uid
* Fix test
* uncomment benchmarks
* Use resourceID
* use evaluator for access control metadata
* update comment
* Set default permissions based on uid
* Add attribute to accesscontrol filter
* validate that scopes has correct attribute
* lint
* Update comment
* remove attribute parameter and extend prefix
* refactor to use scope prefix
* Get metadata with prefix
* fix test
* fix comparision
* remove unused type
* fix attribute index
* fix typo
* restructure logic
* Get metadata by uid
* fix imports
Co-authored-by: jguer <joao.guerreiro@grafana.com>
* rename GetRuleGroupAlertRules to GetAlertRules
* make rule group optional in GetAlertRulesQuery
* simplify FakeStore. the current structure did not support optional rule group
update method getEvaluatorForAlertRule to accept permissions evaluator and exit on the first negative result, which is more effective than returning an evaluator that in fact is a bunch of slices.
* Annotations backend migration
* Response parser checks
* Moved parse to response parser
* Removed unused imports
* Update type
* response_parser test
* response_parser test for text
* Removed from ctx
* Use vars in annotationQuery
* Tags and tests
* Removed import
Refactoring in 449c608 / PR #43569 moved the "Options" subsection
of the "Config from query" transformation to be a subsection of
the "Apply transformation to data" doc, but those options are not
relevant to that content.
Move this content to be a subsection of the "Config from query"
transformation in the transformation functions reference doc.
* Update dependency stylelint to v14.6.0
* remove old rule that wasn't working properly
* Revert "remove old rule that wasn't working properly"
This reverts commit 41a96ebad2.
* allow any border values
* fix typo
Co-authored-by: Renovate Bot <bot@renovateapp.com>
Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
Expired silences older than the retention period were not being cleaned up. The root problem was that notifier.Alertmanager overrides the Prometheus alert manager's silence maintenance function and was not calling Silences.GC() in the overriden function.
* Alerting: add collision safe update function for alertmanager configurations
* fix typo
* use bootstrap func for tests
* move hash calculation to store
* remove icons lol
* remove removed field
* Move DeleteDashboard funtion into dashboards store service, remove bus and update tests
* Remove bus from folder service and update more tests
* Fix mock
* Add option to set ResourceAttribute for a permissions service
* Use prefix in access control sql filter to parse scopes
* Use prefix in access control metadata to check access
* Data sources: Sent user ID when creating data source
* Data sources: Grant a data source creator edit permissions
* Use edit permisison and only append if user id is in command
Co-authored-by: Karl Persson <kalle.persson@grafana.com>
* Use bookmark icon for Saved Items, add support for solid bookmark icon
* Add some unit tests
* Refactor utils into own file
* Update test title
* Fix import
* consistent function style
* replace bus in guardian with sqlstore
* fix a couple of tests
* replace bus in the rest of the tests
* allow init guardian from other packages
* make linter happy
* init guardian in library elements
* fix another test in libraryelements
* fix more tests
* move guardian mock one level deeper
* fix more tests
* rename init functions
* Refactor to ServiceAccounts Query
* filtering expiredtokens on backend
* WIP
* WIP
* WIP
* fix: missing that we do not cover for no service accounts
* fix: wrong link
* feat: filter able to get only service accounts with expired tokens
* refactor: naming
* Update pkg/services/serviceaccounts/models.go
Co-authored-by: Gabriel MABILLE <gamab@users.noreply.github.com>
* goimported
* Update pkg/services/serviceaccounts/api/api.go
Co-authored-by: Gabriel MABILLE <gamab@users.noreply.github.com>
Co-authored-by: Gabriel MABILLE <gamab@users.noreply.github.com>
* AzureAD OAuth: Add optional strict parsing of role_attribute_path for Azure AD
Fix casting issues
modify unit tests
Unit test fix
Add proper test args
* Return empty role when using strict attribute mode
* Raise error on empty role
* Fix UT for latest case
* First attempt at creating new navbar_preferences table in db
* Apply to every nav item instead of just home
* user essentials mob! 🔱
* user essentials mob! 🔱
* user essentials mob! 🔱
* user essentials mob! 🔱
* user essentials mob! 🔱
* user essentials mob! 🔱
* user essentials mob! 🔱
* user essentials mob! 🔱
* user essentials mob! 🔱
* user essentials mob! 🔱
* user essentials mob! 🔱
* user essentials mob! 🔱
* user essentials mob! 🔱
* user essentials mob! 🔱
* user essentials mob! 🔱
* user essentials mob! 🔱
* user essentials mob! 🔱
* user essentials mob! 🔱
* user essentials mob! 🔱
* user essentials mob! 🔱
* user essentials mob! 🔱
* user essentials mob! 🔱
* user essentials mob! 🔱
* user essentials mob! 🔱
* user essentials mob! 🔱
* user essentials mob! 🔱
* user essentials mob! 🔱
* user essentials mob! 🔱
* Chore: introduce initTestDB options for features
* fix unit tests
* Add another unit test and some logic for detecting if a preference already exists
* tidy up
* Only override IsFeatureToggleEnabled if it's defined
* Extract setNavPreferences out into it's own function, initialise features correctly
* Make the linter happy
* Use new structure
* user essentials mob! 🔱
* user essentials mob! 🔱
* Split NavbarPreferences from Preferences
* user essentials mob! 🔱
* user essentials mob! 🔱
* Fix lint error
* Start adding tests
* Change internal db structure to be a generic json object
* GetJsonData -> GetPreferencesJsonData
* Stop using simplejson + add some more unit tests
* Update pkg/api/preferences.go
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
* Updates following review comments
* user essentials mob! 🔱
* user essentials mob! 🔱
* user essentials mob! 🔱
* user essentials mob! 🔱
* Change patch to upsert, add a unit test
* remove commented out code
* introduce patch user/org preferences methods
* Return Navbar preferences in the get call
* Fix integration test by instantiating JsonData
* Address review comments
* Rename HideFromNavbar -> Hide
* add swagger:model comment
* Add patch to the preferences documentation
* Add openapi annotations
* Add a short description
* user essentials mob! 🔱
* user essentials mob! 🔱
* user essentials mob! 🔱
* user essentials mob! 🔱
* Update unit tests
* remove unneeded url
* remove outdated comment
* Update integration tests
* update generated swagger
Co-authored-by: Alexandra Vargas <alexa1866@gmail.com>
Co-authored-by: Hugo Häggmark <hugo.haggmark@gmail.com>
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
Refactoring in PR #43569 (commit 3b39c9f) resulted in subsections
of the Labels to Fields transformer's docs being unintentionally
moved under the Organize transformer section. Move these back
under Labels to Fields.
* Alerting: Remove internal labels from prometheus compatible API responses
* Appease the linter
* Fix integration tests
* Fix API documentation & linter
* move removal of internal labels to the models
* Stats: do not count SAs as users
* Stats: implement basic service account metrics
* Stats: do not count service account tokens as api keys
* Stats: fix metric names
* Stats: add SA stats test
* rename user to sa
* support new query type "alert-folder"
* move action calculation to the constructor of the filter
* update filter to support query type `dash-folder-alerting` and empty dashboard actions
* require folders:read to access alert rules
* move alerting actions to accesscontrol to avoid cycledeps
* define new actions and fixed roles for alerting
* add folder permission to alert reader role
* silence errors
* s3 fix - don't retrieve files with path equal to the root
* Storage: unify list queries
* Storage: add `IsFolder` method to file obj
* Storage: API consistency - always refer `File` as a pointer rather than a value
* Remove InTransaction from RuleStore and make it its own interface
* Ensure that ctx-based is clear from name
* Resolve merge conflicts
* Refactor tests to work in terms of the introduced abstraction rather than concrete dbstore
* ServiceAccounts: remove unused endpoint
* ServiceAccounts: remove usage of getOrgUsers from service accounts
* use dialect for boolean str true in delete
* return service account results directly
* Move Service Account Deletions to sa package
Co-authored-by: Gabriel MABILLE <gamab@users.noreply.github.com>
Co-authored-by: gamab <gabi.mabs@gmail.com>
* Move service account methods to service accounts
Co-authored-by: Gabriel MABILLE <gamab@users.noreply.github.com>
Co-authored-by: gamab <gabi.mabs@gmail.com>
* Service accounts should not interfere with users
Co-authored-by: Gabriel MABILLE <gamab@users.noreply.github.com>
* filter service accounts in user services
* mispell fix
* fix overextended lines
Co-authored-by: Gabriel MABILLE <gamab@users.noreply.github.com>
* fix variable
Co-authored-by: Gabriel MABILLE <gamab@users.noreply.github.com>
Co-authored-by: gamab <gabi.mabs@gmail.com>
* Turned div into text button to make it accessible
* Only icon as button to avoid embedded buttons with overrides delete button
* use icon in Button directly
* Removed unused import
* moving id for labelledBy to h6 elem instead of icon
* Tweaking style, bigger caret
* Fixed aria-expanded
* Modifying and using CollapseToggle from unified alerting
* Added restOfProps to CollapseToggle
* Fix data source scope resolver
* Adding ds UID scope resolver
* Register UID resolver
* use package full name
* even if it cannot be empty as of now and is also checked by store, better safe than sorry
Refactors GetPluginDashboards/LoadPluginDashboard by moving database
interaction from plugin management to the plugindashboards service.
Fixes#44553
Co-authored-by: Will Browne <wbrowne@users.noreply.github.com>
* Move call to create permissions into folder service
* Inject cfg, feature toggles and permissions services into dashboard
service
* Move logic to set default permissions on create dashboard from api to
service
* Move call to set default permissions on import dashboard to dashboard
service
* Set permissions for provisioned dashboard and folders in service
* create scope provider
* move datasource actions and scopes to datasource package + add provider
* change usages to use datasource scopes and update data source name resolver to use provider
* move folder permissions to dashboard package and update usages
* Add using mock explanation for testing
* Update information of how to add go:generate in code
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
* Update Yarn to v3.2.0
* Update sdks as well
* Update nodejs to latest
* Updates
* Update grabpl to 2.9.23
Co-authored-by: Renovate Bot <bot@renovateapp.com>
Co-authored-by: Zoltán Bedi <zoltan.bedi@gmail.com>
* add actions, roles and route mapping for rule permission
* add instance\notification actions
* do not declare alerting roles if no feature flag is set (temporary)
* ServiceAccounts: modernize SA creation interface
* ServiceAccounts: improve service account ID generation
* ServiceAccounts: remove unused method
* ServiceAccounts: Make SA ID display name dependent
* ServiceAccounts: Add tests for Service Account creation
* trim trailing whitespace
* Update pkg/services/serviceaccounts/api/api.go
Co-authored-by: Ieva <ieva.vasiljeva@grafana.com>
* Update pkg/services/serviceaccounts/api/api.go
Co-authored-by: Ieva <ieva.vasiljeva@grafana.com>
* PanelEdit: Change the meaning of default data source to be just that the default for new panels
* Added migration, and also migration for annotation datasource prop to data source refs
* fix
* Fixing tests
* Fixes to annotation
* Fixing unit test
* adds an api endpoint for use with public dashboards that validates orgId, dashboard, and panel when running a query. This feature is in ALPHA and should not be enabled yet. Testing is based on new mock sqlstore.
Co-authored-by: Jesse Weaver <jesse.weaver@grafana.com>
Co-authored-by: Leandro Deveikis <leandro.deveikis@gmail.com>
* do not include update if no diff
* refactor calculate changes to include diff (and log)
Co-authored-by: George Robinson <george.robinson@grafana.com>
* chore(eslint): remove prettier-plugin
* chore(eslint): test changes by using grafana/eslint 3.0.0-alpha
* chore(prettier): add js,ts,tsx when checking / writing
* chore(prettier): dont check js files
* chore(linting): align prettier and eslint ignore files
* style: run prettier:write on FE codebase
* chore(eslint): use grafana/eslint-config@3.0.0
* add basic test for buildSchemaConstraint function
* wrap table schema in quote_ident function
* fix type error in meta_query.test
* swap test for inline comment
* make comment more readable
* fix: make it possible to use both class and functional components for plugins
* fix: accept both class and functional components as plugin root pages
* refactor: import types by name
* refactor: use `ComponentType`
* Separate metrics and logs policies
* Update policy examples
Removes GetMetricStatistics which is no longer used
* WIP for testDatasource
* WIP add datasource health check test
* Undo changes on imports
* Chore: Remove deprecated no-op option PreferServerCipherSuites
from the tls configs.
Per golang docs: "PreferServerCipherSuites is a legacy field and has no effect."
* Add actions and scopes
* add resource service for dashboard and folder
* Add dashboard guardian with fgac permission evaluation
* Add CanDelete function to guardian interface
* Add CanDelete property to folder and dashboard dto and set values
* change to correct function name
* Add accesscontrol to folder endpoints
* add access control to dashboard endpoints
* check access for nav links
* Add fixed roles for dashboard and folders
* use correct package
* add hack to override guardian Constructor if accesscontrol is enabled
* Add services
* Add function to handle api backward compatability
* Add permissionServices to HttpServer
* Set permission when new dashboard is created
* Add default permission when creating new dashboard
* Set default permission when creating folder and dashboard
* Add access control filter for dashboard search
* Add to accept list
* Add accesscontrol to dashboardimport
* Disable access control in tests
* Add check to see if user is allow to create a dashboard
* Use SetPermissions
* Use function to set several permissions at once
* remove permissions for folder and dashboard on delete
* update required permission
* set permission for provisioning
* Add CanCreate to dashboard guardian and set correct permisisons for
provisioning
* Dont set admin on folder / dashboard creation
* Add dashboard and folder permission migrations
* Add tests for CanCreate
* Add roles and update descriptions
* Solve uid to id for dashboard and folder permissions
* Add folder and dashboard actions to permission filter
* Handle viewer_can_edit flag
* set folder and dashboard permissions services
* Add dashboard permissions when importing a new dashboard
* Set access control permissions on provisioning
* Pass feature flags and only set permissions if access control is enabled
* only add default permissions for folders and dashboards without folders
* Batch create permissions in migrations
* Remove `dashboards:edit` action
* Remove unused function from interface
* Update pkg/services/guardian/accesscontrol_guardian_test.go
Co-authored-by: Gabriel MABILLE <gamab@users.noreply.github.com>
Co-authored-by: Ieva <ieva.vasiljeva@grafana.com>
* Change to cascader with search
* Don't change to select on backspace
* Fix error on group select
* Simplify getOperationDef
* Set cascader wrapper to fixed width
* Add placeholder
* Fix tests and type errors
* Fix props for backward compatibility
* Add comments
* add timescaleDB checker function
* use existing fn findAggregateIndex
* build options from empty list
* refactor fn and handle state for existing elem
* remove newline
* Add missing OK option to models
* add ok to legacy legacy UI does not support it but it is possible to do so via provisioning.
* use enums in migration so linter would catch missing cases
* fix notification
* Fix confir reader notifiers test
* Move UpdateAlertNotificationWithUid to alertingService
* Rename Store to Manager
* Rename Store to Manager in provisioning
Co-authored-by: Ida Furjesova <ida.furjesova@grafana.com>
* Resolve merge conflicts
* Remove cruft from local exploration
* Move integration tests to intercept using new abstraction layer instead of channel
* Fix linter error after rebase
* ServiceAccounts: Delete/Disable service account from details page
* ServiceAccounts: capitalize viewable messages from UI
* ServiceAccounts: Link new update endpoint to details page
* ServiceAccounts: reimplement service account retrieve to include is_disabled and only target service accounts
* Cleanup styles
* Fix modal show
* ServiceAccounts: simplify handler functions
* Apply suggestions from code review
Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
Co-authored-by: Clarity-89 <homes89@ukr.net>
Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
* fix multiple non-grouped groupings
* drop duplicate alerts
* add test for multiple groups without labels
Co-authored-by: gillesdemey <gilles.de.mey@gmail.com>
* add custom diff reporter DiffReporter that reports only paths that have a difference
* create Diff method for AlertRule that returns DiffReport, which is an alias for []Diff
Tests:
* create copy method for AlertRule in testing
* create GenerateAlertQuery method in testing
* DashboardSrv: add saveDashboard method
* revert external changes
* use DashboardModel instead of DashboardDataDTO
* use fetch instead of request
* use getSaveModelClone in saveDashboard
* ServiceAccounts: Fix token-apikey cross deletion
* ServiceAccounts: separate API key store and service account token store
* ServiceAccounts: hide service account tokens from API Keys page
* ServiceAccounts: uppercase statement
* ServiceAccounts: fix and add new tests for SAT store
* ServiceAccounts: remove service account ID from add API key
* ServiceAccounts: clear up errors
* Remove check for explore
* Remove core app import
* applyVariables for select
* applyVariables for tags
* applyVariables for other query props
* applyTemplateVariables for flux
* applyTemplateVariables for influx
* Backwards compatibility
* interpolateVariablesInQueries
* Update InfluxQL mode and alias in test
* Should interpolate all variables with Flux mode
* Variables should be interpolated correctly
* Removed unused import
* explore in if check
* Removing backwards compat copy from classicQuery
* Return expandedQuery
* Const
* Create DashAlertService service
* Remove no used dashboard service from plugin's manager that generates dependency cycle in Enterprise
* Remove bus for dashboard permissions
* Remove bus from dashboard extractor service
* Add missing argument
* Fix wire
* Fix lint
* More goimports
* Use datasource service instead sql calls
* Fix integration test
* ServiceAccounts: add teams to service account DTO
* ServiceAccounts: Add team display to service accounts
* ServiceAccounts: add AC metadata to detail route
* ServiceAccounts: add role picker to detail page
* ServiceAccounts: Add role to profile DTO
* ServiceAccounts: remove wip mention of created by
* Use PluginSettingsService instead of SQLStore in plugins
* Fix pluginproxy use of pluginsettings methods
* Fix additional pluginsettings methods
* Remove dispatch from plugindashboards
* Fix lint and adjust mock
* Remove unused pluginsettings
* Rename pluginsetting Service and ServiceImpl and add binding to wire
* Move pluginsettings binding in wire file
* Prometheus: Remove auto range option
* Prometheus: Remove auto range option
* Overhaul of range vector operations and default param
* Make sure label is string
* Add new transformer grouping to matrix
* Add new transformer grouping to matrix tests
* Add new transformer grouping to matrix UI
* Fix tests for grouping to matrix transformer
* Update transformer to latest interfaces
* Add field selector to form
* Make linter happier
* Replace Fields with InlineSnapshot as it was to taking units properly
* Rearrange for new transformers structure
* Expose GroupingToMatrix options as part of data package
* Increase labelWidth as suggested
* Add uniqueValues helper function and use it to extract Column and Row Values
This commit changes staleResultsHandler to create an annotation if the current state is Alerting and the result is being removed from the state cache as it has not been updated since 2x the evaluation interval.
* Explore: fix object value parsing for downloading traces as csv
Signed-off-by: tharun <rajendrantharun@live.com>
* add replacer function to fix circular objects
Signed-off-by: tharun <rajendrantharun@live.com>
* Add lotex group removal UI
* Connect UI to delete group action
* Add rules' refreshing after deletion of a group
* Improve confirmation message
* Add tests for RulesGroup
* Remove redundant check
* add field for custom slack endpoint
* add test for using custom endpoint
* Update pkg/services/ngalert/notifier/channels/slack.go
Co-authored-by: Alexander Weaver <weaver.alex.d@gmail.com>
* specify description for endpoint
* remove brittle string constants
Co-authored-by: Alexander Weaver <weaver.alex.d@gmail.com>
* remove flaky cloudwatch test
* remove unused code that was only in flaking test
* okay i guess they're both flaky
* Skip flaking templating-dashboard-links-and-variables test
* Create basic query history test
* Clean up
* Clean up
* Use run button selector
* Mock AutoSizer instead of monkey-patching
* Reset local storage after each test
* Add accessible name to Run Query button and use it in the test
* Update public/app/features/explore/spec/helper/interactions.ts
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
* Rename query to urlParams
* Fix linting errors
* Remove unused import
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
* Update API controller
- add validation of rules API model
- add function to calculate changes between the submitted alerts and existing alerts
- update RoutePostNameRulesConfig to validate input models, calculate changes and apply in a transaction
* Update DBStore
- delete unused storage method. All the logic is moved upstream.
- upsert to not modify fields of new by values from the existing alert
- if rule has UID do not try to pull it from db. (it is done upstream)
* Add rule generator
* Query history: Add starring and unstarring API
* Return dto with starred info when commenting
* Add documentation for starring and unstarring of query
* Return dto when starring/unstarring
* Update documentation
* Update deleting with unstarring
* Check queryUID length in queryhistory
* Fix linting issues
* Update docs/sources/http_api/query_history.md
Co-authored-by: Piotr Jamróz <pm.jamroz@gmail.com>
* Update docs/sources/http_api/query_history.md
Co-authored-by: Piotr Jamróz <pm.jamroz@gmail.com>
Co-authored-by: Piotr Jamróz <pm.jamroz@gmail.com>
* make getordbyname a method
* remove one dispatch from plugins provisioner
* remove bus from the plugins provisioner, skip test for now
* remove bus from datasource provisioning
* resolve tests in notifier provisioning
* remove bus from the dashboards provisioning service
* fix missing struct field
* fix getorgbyid method calls
* pass org store into dashboard provisioner
* fix test function prototype
* fix tests
* attempt to fix tests after the rebase
* fix integration test
* avoid using transaction
* remove comments
* 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
* ServiceAccounts: respect js casing and small fixes to displayed values
* ServiceAccounts: fix typos on service account
* ServiceAccounts: fix missing orgID in service account
* ServiceAccounts: Small fixes to dtos for profile
* ServiceAccounts: use result org id
* ServiceAccounts: return value is always nil
* :construction:: Mob session work 🔱
* user essentials mob! 🔱
* user essentials mob! 🔱
* :construction:: Mob session work 🔱
* user essentials mob! 🔱
* user essentials mob! 🔱
* user essentials mob! 🔱
* user essentials mob! 🔱
Co-authored-by: Hugo Häggmark <hugo.haggmark@gmail.com>
Co-authored-by: Alexandra Vargas <alexa1866@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
* 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
* Check type and act accordingly
* Add string type
* Add bool type
* Change method name in test
* Remove comment
* Changed test var names to represent the float case
* Added string test case
* Added bool test case
* Update response in test
* Change string val
* Fix frame meta missing in tests
* Fixed test parse query
* Fixed out of bounds test
* parseFloatSeries
* parseStringSeries and parseBoolSeries
* Formatting
* Use multi frames for now
* strings.ToLower for time col check
* Move timeField out of if checks
* Update dependency react-hook-form to v7.27.0
* fix type errors for alerting components with new react-hook-form version (#45341)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
Co-authored-by: Nathan Rodman <nathanrodman@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.
* add base nullable migration to is_service_account
Co-authored-by: Jeremy Price <jeremy.price@grafana.com>
* fix postgres migration
* ServiceAccounts: ensure SA is set to false when creating a user
Co-authored-by: Jeremy Price <jeremy.price@grafana.com>
* Trying out json formatting of azure graph err from frontend
* Added some tests wip
* Wrap text in popper tooltip
* fix conflict
* Wrap text in tooltip
* Complete tests
* Added invalid json test
* Backend changes and tests
* removed comments
* Added split of message / json and edge cases tests
* Addressed comments
* moved catch to parseErrorMessage
* log-volume: adjust request-id to avoid conflicts
* added unit test
* simplify test
Co-authored-by: Piotr Jamróz <pm.jamroz@gmail.com>
* added missing import
Co-authored-by: Piotr Jamróz <pm.jamroz@gmail.com>
* Update dependency lru-cache to v7
* Make latest lru cache work
Co-authored-by: Renovate Bot <bot@renovateapp.com>
Co-authored-by: Zoltán Bedi <zoltan.bedi@gmail.com>
* adding functions for prometheus queries
* WIP: functions added. Just categorizing them and testing each function out
* WIP: testing functions
* WIP verifying other functions
* Functions added and classified
* added tests
* moved bottomk to aggregations module
* added tests to the PromQueryModeller
* code review comments. Made range renderer common with code
* removed duplicate functions
* updated comments
* Chore: Remove x from health
* Chore: Remove x from dashboard and user
* Chore: Remove x from alert notification
* Chore: Remove x from stats
* Fix: Update func signature in stats test
* Refactor: Remove x from GetDashboardTags
* Chore: Remove x from dashboard
* Chore: Remove x from Stats
* Fix: Update refs of HasAdminPermissionInFolders
* Fix: Adjust funcs in tests to be sqlStore methods
* Fix: Fix database folder test sqlstore methods
* Add keybindings to explore, allow override of dashboard model update for explore update
* Remove edits to Dashboard Model, add definition when url params should be updated
* Add tests
* Add and expose util function instead of bringing in unrelated library do not define explicit path to library file
* Use more generic model for TimeSrv
* Remove url utility functions, use javascript function instead
* Break out TimeModel into new type and bring it in
* condense object creation
* Add providers to folder and dashboard services
* Refactor folder and dashboard services
* Move store implementation to its own file due wire cannot allow us to cast to SQLStore
* Add store in some places and more missing dependencies
* Bad merge fix
* Remove old functions from tests and few fixes
* Fix provisioning
* Remove store from http server and some test fixes
* Test fixes
* Fix dashboard and folder tests
* Fix library tests
* Fix provisioning tests
* Fix plugins manager tests
* Fix alert and org users tests
* Refactor service package and more test fixes
* Fix dashboard_test tets
* Fix api tests
* Some lint fixes
* Fix lint
* More lint :/
* Move dashboard integration tests to dashboards service and fix dependencies
* Lint + tests
* More integration tests fixes
* Lint
* Lint again
* Fix tests again and again anda again
* Update searchstore_test
* Fix goimports
* More go imports
* More imports fixes
* Fix lint
* Move UnprovisionDashboard function into dashboard service and remove bus
* Use search service instead of bus
* Fix test
* Fix go imports
* Use nil in tests
* Legend editor is working
* It's working
* Progress on auto legend mode
* Fixes
* added unit tests
* Added go tests
* Fixing tests
* Fix issue with timing and internal state
* Update public/app/plugins/datasource/prometheus/querybuilder/components/PromQueryCodeEditor.tsx
Co-authored-by: Ivana Huckova <30407135+ivanahuckova@users.noreply.github.com>
* Send metricFindQuery to backend
* Added feature toggle
* Changed flag name
* metricFindQuery backend
* Added test for metricFindQuery backend parse
* Added test for show tag values
* Test for metricFindQueries
* Updated tests
* Put back comment
* Case insensitive in transformRows
* Check length ov value pair
* Sep tests
* Updated valuePair index
* filter teams for editors to only show the teams that they are members of
* frontend changes to only allow clicking on teams that the user can edit
* update frontend test snapshots
* extend docs
* reword
* remove the comment for now
* Update backend tests
* reword the warning, and add it back in
* docs feedback
Co-authored-by: gamab <gabi.mabs@gmail.com>
* chore: persist the PR number in the Levitate workflow artifact
This is going to be used later in the reporting workflow, as for
3rd party (fork) PRs Github doesn't correctly populate the `workflow_run` context (the PR number is missing from it).
* chore: use the PR number from the artifact for Levitate reporting
* docs for teams with FGAC
* Update docs/sources/enterprise/access-control/fine-grained-access-control-references.md
Co-authored-by: Gabriel MABILLE <gamab@users.noreply.github.com>
Co-authored-by: Gabriel MABILLE <gamab@users.noreply.github.com>
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.
* Prometheus: Adding a slimmed down code mode for new prometheus query ux
* Show Both option in Explore
* Prometheus: Adding query defaults handling
* More tweaks
* Fixing defaults and logic for when to show exemplars toggle
* Fixing tooltip text
* Set exemplars to false when setting query type instant
* Updated test
* 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>
* Wip
* docs: add the first version of the breaking-changes guidelines
* chore: add a graphic about the CI workflow
* docs: add information about the CI workflow
* docs: add TOC to the breaking changes guideline
* chore: add a link in the comment to the guideline
* docs: fine-tune the style of the last paragraph
* docs: fix the way we reference `deprecationWarning()`
* fix: Prettier issues
* fix: fix Prettier issues
* docs: update the wording in the guide
Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>
* docs: update the wording in the guide
Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>
* docs: update the wording in the guide
Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>
* docs: update the wording in the guide
Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>
* docs: update the wording in the guide
Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>
* docs: fix typo in the guideline
Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>
* docs: fix typo in the guideline
Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>
* docs: fix typo in the guideline
Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>
* docs: update the wording in the guide
Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>
* docs: update the wording in the guide
Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>
* docs: update the wording in the guide
Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>
* fix: fix prettier issues
Co-authored-by: Jack Westbrook <jack.westbrook@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>
* chore(tsconfig): update grafana/tsconfig to 1.2.0 for outputting es6
* rewrote the unsubscription part to use first().
* test: update failing tests to work with es6 output
* removed bug where we dispatch a promise instead of an array of ritch history.
Co-authored-by: Marcus Andersson <marcus.andersson@grafana.com>
* Remove unused properties
* Fix unit tests
* Fix unit tests
* Split data models
* Simplify updating items in rich history
* Update tests
* Fix starring an item and add a unit test
* Move the converter to a separate file and add unit tests
* Convert a private function to an inline function
* Add more docs and clean up the code
* Update public/app/core/history/localStorageConverter.ts
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
* Update public/app/core/utils/richHistory.test.ts
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
* Use template literals over explicit casting
* Split updateRichHistory to three separate functions
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
* InfluxDB backend migration
* Multiple queries and more
* Added types
* Updated preferredVisualisationType
* Updated model parser test to include limit,slimit,orderByTime
* Added test for building query with limit, slimit
* Added test for building query with limit, slimit, orderByTime and puts them in the correct order
* Add test: Influxdb response parser should parse two responses with different refIDs
* Moved methods to responds parser
* Add test to ensure ExecutedQueryString is populated
* Move functions out of response parser class
* Test for getSelectedParams
* Merge cases
* Change to const
* Test get table columns correctly
* Removed unecessary fields
* Test get table rows correctly
* Removed getSeries function
* Added test for preferredVisualisationType
* Added test for executedQueryString
* Modified response parser
* Removed test
* Improvements
* Tests
* Review changes
* Feature flag rename and code gen
* AccessControl: Filter team members
* Modify GetTeamMembersByUser comment
* Fix postgres failing test due to quoting
* Rename GetTeamMembersByUser to GetUserTeamMemberships
* Update TeamStore interface
* Remove bus from datasource api
* Add DatasourcePermissionService and use it in api
* Fix wire and rename
* Fix import in wire
* Fix bug
* Rename Service to OSS service
* Roll back fix
* * 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>
* Add betterer test for number of enzyme tests
* emit metric for number of enzyme tests
* update frontend metrics script
* Merge...
* Switch order of betterer/lint
* Update version of betterer
* kick levitate
* Update lockfile
* Initial token creation dialog
* Use date picker for expiration date
* Reset state after closing modal
* Create token flow
* Move modal to separate component
* Minor refactor
* Apply suggestions from code review
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
* add SQL migrations
* dashboard previews from sql: poc
* added todos
* refactor: use the same enums where possible
* use useEffect, always return json
* added todo
* refactor + delete files after use
* refactor + fix manual thumbnail upload
* refactor: move all interactions with sqlStore to thumbnail repo
* refactor: remove file operations in thumb crawler/service
* refactor: fix dashboard_thumbs sql store
* refactor: extracted thumbnail fetching/updating to a hook
* refactor: store thumbnails in redux store
* refactor: store thumbnails in redux store
* refactor: private'd repo methods
* removed redux storage, saving images as blobs
* allow for configurable rendering timeouts
* added 1) query for dashboards with stale thumbnails, 2) command for marking thumbnails as stale
* use sql-based queue in crawler
* ui for marking thumbnails as stale
* replaced `stale` boolean prop with `state` enum
* introduce rendering session
* compilation errors
* fix crawler stop button
* rename thumbnail state frozen to locked
* #44449: fix merge conflicts
* #44449: remove thumb methods from `Store` interface
* #44449: clean filepath, defer file closing
* #44449: fix rendering.Theme cyclic import
* #44449: linting
* #44449: linting
* #44449: mutex'd crawlerStatus access
* #44449: added integration tests for `sqlstore.dashboard_thumbs`
* #44449: added comments to explain the `ThumbnailState` enum
* #44449: use os.ReadFile rather then os.Open
* #44449: always enable dashboardPreviews feature during integration tests
* #44449: remove sleep time, adjust number of threads
* #44449: review fix: add `orgId` to `DashboardThumbnailMeta`
* #44449: review fix: automatic parsing of thumbnailState
* #44449: lint fixes
* #44449: review fix: prefer `WithDbSession` over `WithTransactionalDbSession`
* #44449: review fix: add a comment explaining source of the filepath
* #44449: review fix: added filepath validation
* #44449: review fixes https://github.com/grafana/grafana/pull/45063/files @fzambia
Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
Co-authored-by: Alexander Emelin <frvzmb@gmail.com>
* Tooltips: Make tooltips non interactive by default
* More updates and cleanup
* Update
* Make time range picker tooltip interactive
* Fix issue
* Trying to make Receivers test faster
* Make JSONCell tooltip interactive
It is conventionally common for the X-Forwarded-For header to contain a
comma-separated list of IP addresses, with each intermediate proxy
adding an additional item as a request passes through it. This change
makes the web framework handle this case appropriately, always selecting
the first item in the list.
* 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>
* feat: add serviceaccountDTO
* WIP
* feat: listing number of tokens for a given service account
* nit: removed fmt
* Update pkg/services/serviceaccounts/database/database.go
* Update public/app/features/serviceaccounts/ServiceAccountsListPage.tsx
* fixes
* align DTOProfile data to the frontend
* reviewed myself fixes
* fix: tests fix
* fix: scoping for service accoutns
* fix: scoping for service accoutns
* Update pkg/services/serviceaccounts/api/api.go
Co-authored-by: Alexander Zobnin <alexanderzobnin@gmail.com>
Co-authored-by: Alexander Zobnin <alexanderzobnin@gmail.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>
* fix SA creation scope
* add writer action to SA fixed role
* ServiceAccounts: Add token table to SA detail page
* ServiceAccounts: Allow deletion of tokens from token table
* refactor service account page
* avoid using store for delete
* fix(detect-breaking-changes): use the base.ref for backport compatibility
* chore(check-breaking-changes): update path to previous package dist directory
We would like this to have a bit better chance for helping out with
breaking changes in the beginning and also to have a historical overview
of what happened.
* 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
* Narrow Variable editor state using selector functions
- Explicitly type "extended" editor state in editor/reducter.ts using a union
- Create selectors to narrow the types, using unique properties from each extended state to discriminate the union
- Update DataSourceVariableEditor to use new style of redux connector
- Update variable editor components to use new selectors
* fix tests
* Make adhoc variable infoText optional, because it is!
* Add AdHocVariableEditor tests
* DataSourceVariableEditor tests
* comment
* reset
* Wrote tests for selectors \(that actually caught a bug, whodathunkit)
* fix stray types and lint issues
* Rename selector functions
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
* Prometheus: Add multi-word search and higlight to metric selector
* Remove redundant test
* Remove redundant test id
* Update PromQueryBuilder test
* Match only words split with space
* ServiceAccounts: move token handlers to specific file
* ServiceAccounts: move Add API key to Service account
* APIKeys: api keys can still be used even when service accounts are enabled
* APIKeys: legacy endpoint can't be used to add SA tokens
* ServiceAccount: add tests for creation with nil and non-nil service account ids
* ServiceAccounts: fix unnasigned cfg and AC typo
* Test: test service account token adding
* fix linting error
* ServiceAccounts: Handle Token deletion
* rename token funcs
* rename token funcs and api wrapping
* add token deletion tests
* review
Co-authored-by: eleijonmarck <eric.leijonmarck@gmail.com>
* remove bus
* Update pkg/api/apikey.go
Co-authored-by: eleijonmarck <eric.leijonmarck@gmail.com>
* Prometheus: Query builder legend format, first working state
* Added format option
* Working options section
* Wrapping stuff up removing old stuff
* Fixed ts issues
* Review fixes
* Added unit tests for preview toggle
* Remove bus from dashboard api
* Polish api dashboard tests
* Remove Delete Slug method
* Fix sqlstore dashboard test
* Remove bus from dashboard permission
* Remove GetDashboardsBySlug from sqlstore
* Simplistic store API for provenance lookups on arbitrary types
* Add a few notes in comments
* Improved type safety for provisioned objects
* Clean-up TODOs for future PRs
* Clean up provisioning model
* Clean up tests
* Restrict allowable types in interface
* Fix linter error
* Move AlertRule domain methods to same file as AlertRule definition
* Update pkg/services/ngalert/models/provisioning.go
Co-authored-by: George Robinson <george.robinson@grafana.com>
* Complete interface rename
* Pass context through store API
* More idiomatic method names
* Better error description
* Improve code-docs
* Use ORM language instead of raw sql
* Add support for records in different orgs
* ResourceTypeID -> ResourceType since it's not an ID
Co-authored-by: George Robinson <george.robinson@grafana.com>
* Chore: Remove bus from admin users
* Mock authinfoservice
* Update user id
* attempt to fix the tests in admin users api
* fix type cast
* revert skipped tests
Co-authored-by: Serge Zaitsev <serge.zaitsev@grafana.com>
* Fix evaluation of alert rules for datasources with custom headers
* Fix unit tests
* Fix integration tests
* Evaluator fields should be package private
* assign handlers to httpserver
* turn sqlstore mock in to a pointer
* add search service interface
* fix tests for alerting and other apis
* once again, make linter happy
* 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
* Fix crash on no service accounts
* Fix tests
* Update org_users.go
* Update org_users.go
* linter, again
* Update build.go
* Update pkg/services/serviceaccounts/tests/common.go
* fix: big D
Co-authored-by: Eric Leijonmarck <eric.leijonmarck@gmail.com>
* Suppress "not wrapped in act()" warning in UserPicker test
* Add menuShouldPortal to AmRoutesExpandedForm to suppress deprecation warning
* use forwardRef in alerting ActionIcon to suppress ref warning
* Add menuShouldPortal to alerting GroupBy to suppress deprecation warning
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
* AccessControl: Show UserPicker based on canListUser
* Update public/app/core/components/AccessControl/AddPermission.tsx
Co-authored-by: Ieva <ieva.vasiljeva@grafana.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
* Wrap the inner template into div to prevent premailer from breaking the HTML structure
* Remove test row
* Add wrapper explanation
* Remove redundant code
* Add empty line
* propagate notificationservice down to the notifiers
* replace dispatch in result handler
* remove dispatch from the rule reader
* remove dispatch from eval context
* remove dispatch from alerting usage
* remove dispatch from alerting usage
* remove dispatch from notifier
* attempt to fix tests in alerting
* hello linter, my old friend; also disable some tests for now
* use mocks to fix the tests
* resolving wire providers
* make linter happy
* remove yet another bus.dispatch
* fix tests using store mock
* Chore: Remove bus from password
* Refactor: Remove bus from password.go and adjust tests
* remove sqlstore dependency from notifications
* Chore: Remove bus from password
* Refactor: Remove bus from password.go and adjust tests
* remove sqlstore dependency (again)
* remove fmt printf
* fix dependencies in http server
* fix renamed method in tests
Co-authored-by: Serge Zaitsev <serge.zaitsev@grafana.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>
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
* 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":"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/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!"
"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":"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/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!"
- **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://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/configuring-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](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`.
@@ -188,13 +192,14 @@ First, evaluate if the documentation makes sense to be included in the Grafana p
- Is this something we want/can maintain as a project?
- Is this referring to usage of some specific integration/tool and in that case is that a popular use case in combination with Grafana?
- If unsure, kindly and politely add a comment explaining that we would need [upvotes](https://help.github.com/en/articles/about-conversations-on-github#reacting-to-ideas-in-comments) to identify that lots of other users want/need this.
- If unsure, kindly and politely add a comment explaining that we would need [upvotes](https://github.blog/2016-03-10-add-reactions-to-pull-requests-issues-and-comments) to identify that lots of other users want/need this.
Second, label the issue `type/docs` and at least one `area/*` or `datasource/*` label.
**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.
@@ -291,20 +296,20 @@ In many cases the issue author or community as a whole is more suitable to contr
## Investigation of issues
When an issue has all basic information provided, but the triage responsible haven't been able to reproduce the reported problem at a first glance, the issue is labeled [Needs investigation](https://github.com/grafana/grafana/labels/needs%20investigation). Depending on the perceived severity and/or number of [upvotes](https://help.github.com/en/articles/about-conversations-on-github#reacting-to-ideas-in-comments), the investigation will either be delegated to another maintainer for further investigation or put on hold until someone else (maintainer or contributor) picks it up and eventually starts investigating it.
When an issue has all basic information provided, but the triage responsible haven't been able to reproduce the reported problem at a first glance, the issue is labeled [Needs investigation](https://github.com/grafana/grafana/labels/needs%20investigation). Depending on the perceived severity and/or number of [upvotes](https://github.blog/2016-03-10-add-reactions-to-pull-requests-issues-and-comments), the investigation will either be delegated to another maintainer for further investigation or put on hold until someone else (maintainer or contributor) picks it up and eventually starts investigating it.
Investigating issues can be a very time consuming task, especially for the maintainers, given the huge number of combinations of plugins, data sources, platforms, databases, browsers, tools, hardware, integrations, versions and cloud services, etc that are being used with Grafana. There is a certain number of combinations that are more common than others, and these are in general easier for maintainers to investigate.
For some other combinations it may not be possible at all for a maintainer to setup a proper test environment to investigate the issue. In these cases we really appreciate any help we can get from the community. Otherwise the issue is highly likely to be closed.
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.
Even if you don't have the time or knowledge to investigate an issue we highly recommend that you [upvote](https://github.blog/2016-03-10-add-reactions-to-pull-requests-issues-and-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>`
Grafana allows you to query, visualize, alert on and understand your metrics no matter where they are stored. Create, explore, and share dashboards with your team and foster a datadriven culture:
Grafana allows you to query, visualize, alert on and understand your metrics no matter where they are stored. Create, explore, and share dashboards with your team and foster a data-driven culture:
- **Visualize:** Fast and flexible client side graphs with a multitude of options. Panel plugins offer many different ways to visualize metrics and logs.
- **Visualizations:** Fast and flexible client side graphs with a multitude of options. Panel plugins offer many different ways to visualize metrics and logs.
- **Dynamic Dashboards:** Create dynamic & reusable dashboards with template variables that appear as dropdowns at the top of the dashboard.
- **Explore Metrics:** Explore your data through ad-hoc queries and dynamic drilldown. Split view and compare different time ranges, queries and data sources side by side.
- **Explore Logs:** Experience the magic of switching from metrics to logs with preserved label filters. Quickly search through all your logs or streaming them live.
@@ -30,8 +30,8 @@ The Grafana documentation is available at [grafana.com/docs](https://grafana.com
If you're interested in contributing to the Grafana project:
- Start by reading the [Contributing guide](/CONTRIBUTING.md).
- Learn how to set up your local environment, in our [Developer guide](/contribute/developer-guide.md).
- Start by reading the [Contributing guide](https://github.com/grafana/grafana/blob/HEAD/CONTRIBUTING.md).
- Learn how to set up your local environment, in our [Developer guide](https://github.com/grafana/grafana/blob/HEAD/contribute/developer-guide.md).
- 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.
# Path to where grafana can store temp files, sessions, and the sqlite3 db (if that is used)
@@ -122,6 +125,9 @@ path = grafana.db
# 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"
@@ -190,12 +196,19 @@ reporting_enabled = true
reporting_distributor=grafana-labs
# Set to false to disable all checks to https://grafana.com
# for new versions (grafana itself and plugins), check is used
# in some UI views to notify that grafana or plugin update exists
# for new versions of grafana. The check is used
# in some UI views to notify that a grafana update exists.
# This option does not cause any auto updates, nor send any information
# only a GET request to https://grafana.com to get latest versions
# only a GET request to https://raw.githubusercontent.com/grafana/grafana/main/latest.json to get the latest version.
check_for_updates=true
# Set to false to disable all checks to https://grafana.com
# for new versions of plugins. The check is used
# in some UI views to notify that a plugin update exists.
# This option does not cause any auto updates, nor send any information
# only a GET request to https://grafana.com to get the latest versions.
check_for_plugin_updates=true
# Google Analytics universal tracking code, only enabled if you specify an id here
google_analytics_ua_id=
@@ -208,12 +221,21 @@ 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 ``.
application_insights_endpoint_url=
# Controls if the UI contains any links to user feedback forms
# 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,15 +903,30 @@ max_annotations_to_keep =
# Enable the Explore section
enabled=true
#################################### Help #############################
# Used for uploading images to public servers so they can be included in slack/email messages.
@@ -913,10 +1034,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 +1106,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 +1129,23 @@ 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=
# The new prometheus visual query builder
promQueryBuilder=true
# Experimental Explore to Dashboard workflow
explore2Dashboard=true
# feature1 = true
# feature2 = false
[date_formats]
# For information on what formatting patterns that are supported https://momentjs.com/docs/#/displaying/
# Path to where grafana can store temp files, sessions, and the sqlite3 db (if that is used)
@@ -123,6 +126,9 @@
# 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.
@@ -195,19 +201,41 @@
# The name of the distributor of the Grafana instance. Ex hosted-grafana, grafana-labs
;reporting_distributor = grafana-labs
# Set to false to disable all checks to https://grafana.net
# for new versions (grafana itself and plugins), check is used
# in some UI views to notify that grafana or plugin update exists
# Set to false to disable all checks to https://grafana.com
# for new versions of grafana. The check is used
# in some UI views to notify that a grafana update exists.
# This option does not cause any auto updates, nor send any information
# only a GET request to http://grafana.com to get latest versions
# only a GET request to https://raw.githubusercontent.com/grafana/grafana/main/latest.json to get the latest version.
;check_for_updates = true
# Set to false to disable all checks to https://grafana.com
# for new versions of plugins. The check is used
# in some UI views to notify that a plugin update exists.
# This option does not cause any auto updates, nor send any information
# only a GET request to https://grafana.com to get the latest versions.
;check_for_plugin_updates = true
# Google Analytics universal tracking code, only enabled if you specify an id here
;google_analytics_ua_id =
# 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
;rudderstack_config_url =
# Controls if the UI contains any links to user feedback forms
#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 +1012,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 +1083,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 +1107,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.
# Handling breaking changes in Grafana frontend APIs
This guide tries to help you identify and communicate breaking changes introduced to our frontend API.
- [What are our public APIs?](#what-are-our-public-apis)
- [What is Levitate?](#what-is-levitate)
- [How does the CI workflow look like?](#how-does-the-ci-workflow-look-like)
- [I received a comment on my PR, what does it mean?](#i-received-a-comment-on-my-pr-what-does-it-mean)
- [**I know it's a breaking change, what's next?**](#i-know-its-a-breaking-change-whats-next)
- [Introduce breaking changes only in major versions](#introduce-breaking-changes-only-in-major-versions)
- [Deprecate first](#deprecate-first)
- [Communicate](#communicate)
- [I still have questions, who can help me out?](#i-still-have-questions-who-can-help-me-out)
---
## What are our public APIs?
The Grafana frontend codebase is exposing functionality through NPM packages to make plugin development easier and faster.
These packages live in the `/packages` folder and contain packages like:
-`@grafana/data`
-`@grafana/runtime`
-`@grafana/toolkit`
-`@grafana/ui`
- etc. ([They can be viewed here](https://github.com/grafana/grafana/tree/main/packages)
Any change that causes dependent software to behave differently is considered to be breaking.
## What is Levitate?
[`@grafana/levitate`](https://github.com/grafana/levitate) is a tool created by Grafana that can show breaking changes between two versions of a **TypeScript** package or a source file.
It can list exported members of an NPM package or imports used by an NPM package,
**but we are mainly using it for comparing different versions of the same package to see changes in the exported members.**
A Github workflow runs against every pull request and comments a hint in case there are
possible breaking changes. It also adds the `"breaking change"` label to the pull request.
Receiving a comment like the one above does not necessarily mean that you actually introduced breaking
changes (as certain edge cases are still not covered by the tool), but as there is a good chance we rather raise attention.
By clicking the links in the comment ("more info" or "Check console output") you can view more detailed information about what triggered the notification.
This means that some previously exported members won't be available in the newer version of the package which can break dependent plugins.

**Changed an existing member** (console view):<br />
This means that a member was changed in a way that can break dependent plugins.

**No breaking changes** (console view):<br />
Seeing this suggests that whilst changes were made, most probably none of them were breaking. You are good to go! 👏

## How can I decide if it is really a breaking change?
First go to the console output of the workflow and make sure that the diffs make sense.
It can happen that Levitate highlights a change which is marked with TSDoc tags `// @alpha` or `// @internal` in
which case you can choose to ignore it - keep in mind though that these flags won't really hold developers back
from using your code and most likely it is going to cause them problems if we are breaking them.
It can also happen that Levitate marks changing an interface as a possible breaking change.
For anyone that implements that interface introducing a new property will break their code. Whilst this is correctly marked as a breaking change maybe it is an interface that is never implemented by other developers. In which case you can choose to ignore Levitate's message.
These notifications are only warnings though, and **in the end it's up to the author of the PR to make a decision that makes the most sense.**
## I know it's a breaking change, what's next?
### Introduce breaking changes only in major versions
We can make breaking changes less painful if they are only happening between major releases of Grafana.
### Deprecate first
Whenever possible try to deprecate first what you are about to remove or change. For example:
```javascript
import{deprecationWarning}from'@grafana/data';
/**
* @deprecated -- this is no longer necessary and will be removed in Grafana 9.0.0
2. Add info in the comment about **when it is going to be removed**
3. Add info in the comment about **what should be used instead**
4. In case it's a function or a method, use `deprecationWarning(<file name>, <old name>, <new name>)` to raise attention during runtime as well
5. Update the [migration guide](../docs/sources/developers/plugins/migration-guide.md) with your instructions
### Communicate
Reach out to **@grafana/plugins-platform-frontend** to help finding which plugins are using the code that is just about to change, so we try making it smoother by communicating it to them.
---
## I still have questions, who can help me out?
We are here to help.
Please either ping us in the pull request by using the **@grafana/plugins-platform-frontend** handle or reach out to us on the internal Slack in `#grafana-plugins-platform`.
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.