* Default to 'General' if no folder title is present
* Add bottom padding
(cherry picked from commit 5c7e874008)
Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.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>
(cherry picked from commit 6572017ec7)
cleanup
Co-authored-by: gotjosh <josue@grafana.com>
* Add x-skip-cache header to queries
* Specify caching works for CW metrics
(cherry picked from commit 3e47fb1432)
Co-authored-by: Andrej Ocenas <mr.ocenas@gmail.com>
* refactor(Plugins/Admin): add a "badge" for displaying available updates
* refactor(Plugins/Admin): rename component
* refactor(Plugins/Admin): use the PluginListItemBadges component
(cherry picked from commit 3ad5ee87a3)
Co-authored-by: Levente Balogh <balogh.levente.hu@gmail.com>
* prometheus: handle label-values with special characters
* added comment
(cherry picked from commit d363c36853)
Co-authored-by: Gábor Farkas <gabor.farkas@gmail.com>
* 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
(cherry picked from commit cc7f7e30e9)
Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>
* DashboardList/AlertList: Fix for missing All folder value
* Refactor: Fixes case where folder does not exist in results
(cherry picked from commit 7c7b21b39e)
Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>
* Graphite: Ensure only valid queries are used for interpolation
* Add a unit test
(cherry picked from commit 787e5e78dd)
Co-authored-by: Piotr Jamróz <pm.jamroz@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
(cherry picked from commit c2754eb9cc)
Co-authored-by: Levente Balogh <balogh.levente.hu@gmail.com>
* 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>
(cherry picked from commit 62dc10829a)
Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
* 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>
(cherry picked from commit 2dedbcd3c3)
Co-authored-by: Marcus Andersson <marcus.andersson@grafana.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
(cherry picked from commit 02702eb82d)
* 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>
(cherry picked from commit fffcee7c1f)
Co-authored-by: Jack Westbrook <jack.westbrook@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
(cherry picked from commit 5d0d7dcb3a)
Co-authored-by: Yuriy Tseretyan <yuriy.tseretyan@grafana.com>
* BarGauge: Improve behaviour when working with streaming data
* BarGauge: Refactor default min/max into grafana/data
(cherry picked from commit 2058193e98)
Co-authored-by: Ashley Harrison <ashley.harrison@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>
(cherry picked from commit b626ba223f)
Co-authored-by: Marcus Andersson <marcus.andersson@grafana.com>
* 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
(cherry picked from commit d03f75726b)
Co-authored-by: Nathan Rodman <nathanrodman@gmail.com>
* Tempo: add default limit, option to hide Loki search, and run query on hotkey in dropdowns
(cherry picked from commit 06592410b2)
Co-authored-by: Connor Lindsey <cblindsey3@gmail.com>
* Tempo: Show warning if search is not available. Add opt-out config
(cherry picked from commit 24479ff6b0)
Co-authored-by: Connor Lindsey <cblindsey3@gmail.com>
* Improve how tempo search fetches autocomplete values
* Refetch autocomplete options on menu load
(cherry picked from commit 1865689411)
Co-authored-by: Connor Lindsey <cblindsey3@gmail.com>
* Tempo: Run query with keyboard shortcut from duration fields
(cherry picked from commit 9c4e7eb659)
Co-authored-by: Connor Lindsey <cblindsey3@gmail.com>
* Add method GetAllLatestAlertmanagerConfiguration to DBStore
* add method ApplyConfig to AlertManager
* update multiorg alert manager to load all alertmanager configs at once
(cherry picked from commit 1910d85ae0)
Co-authored-by: Yuriy Tseretyan <yuriy.tseretyan@grafana.com>
* prevent preview if no condition is set
* fixes after pr feedback
* watch on type and condition
(cherry picked from commit cc94c55e48)
Co-authored-by: Peter Holmberg <peterholmberg@users.noreply.github.com>
* 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
(cherry picked from commit 4dc556445c)
Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>
Makes sure to set the SigV4 service namespace for Elasticsearch and Prometheus.
Fixes#38440
(cherry picked from commit 45a844e77e)
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
* Update lockfile to correct output after running `yarn install`
* Chore: Remove caniuse-db since nothing is using it anymore
(cherry picked from commit bbf64722e4)
Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
* feat(Plugins/Admin): add a function to update panels
* fix(Plugins/Admin): update the available panels on plugin install / uninstall
(cherry picked from commit c8e94a2443)
Co-authored-by: Levente Balogh <balogh.levente.hu@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
(cherry picked from commit 9f027e32b7)
Co-authored-by: Gábor Farkas <gabor.farkas@gmail.com>
* Fix: State timeline panel tooltip error when data is not in sync
* Move check from tooltip to panel
(cherry picked from commit 24475cfdda)
Co-authored-by: Zoltán Bedi <zoltan.bedi@gmail.com>
* BarGauge: Set cell color to off if numeric value is NaN
* BarGauge: Pull getCellColor out into a pure function and add unit tests
(cherry picked from commit 6948dbe550)
Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
* Variables: Prevents panel from crashing when using adhoc variable in data links
* Refactor: uses isAdhoc instead
* Chore: updates after PR feedback
(cherry picked from commit af5296bee7)
Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>
* influxdb: flux: use more precise start and end timestamps
* added unit test
(cherry picked from commit bf0dc3ef62)
Co-authored-by: Gábor Farkas <gabor.farkas@gmail.com>
* Filter NaN values from total calculation
* remove duplicated code, use missing value string for NaN and hidden series
(cherry picked from commit a1d8d6e95e)
Co-authored-by: Oscar Kilhed <oscar.kilhed@grafana.com>
* 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
(cherry picked from commit 660afc6279)
Co-authored-by: Levente Balogh <balogh.levente.hu@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>
(cherry picked from commit 5f48d0641b)
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
* 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
(cherry picked from commit fef8e646ea)
Co-authored-by: Levente Balogh <balogh.levente.hu@gmail.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
(cherry picked from commit 02f9564607)
Co-authored-by: Levente Balogh <balogh.levente.hu@gmail.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>
(cherry picked from commit f3002931f4)
Co-authored-by: Marcus Andersson <marcus.andersson@grafana.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
(cherry picked from commit 39f2ee7692)
Co-authored-by: sam boyer <sam.boyer@grafana.com>
An user within Grafana has a completely different meaning. Multi-tenancy is done via Organizations as a top-level concept.
(cherry picked from commit 35e5bfce40)
Co-authored-by: gotjosh <josue@grafana.com>
Fix bug with engine cache not updating after data source updated, introduced in #36635.
Removes the SQL engine cache because since #36635 we already have instance caching in place using the SDK instance manager.
This also adds support for disposing cached SQL/xorm engines before a query happens to a data source that has been updated. Done by letting the SQL engine implementing the InstanceDisposer interface.
Fixes#37299
* POC/Thresholds: Allow thresholds modification directly from the time series panel
* Snapshot updates
* Optimize styles memoization
* change threshold from graph
* renames and logging
* using useeffect to update graph
* Fix react worning about setting state on unmounted component
* revert panelrenderer
* using onFieldConfig change
* use a useeffect
* simplied fieldConfig state
* Do not use plot context in ThresholdControlsPlugin
* Do not throw setState warnings when drag handle is dropped
* Update thresholds position on the graph when updating threshold drag handle
* fix issues with rerenders
* prevent thresholds on conditions with range
* only edit the first threshold
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
* WIP
* Functional without custom wrapper component, needs highlight
* Remove latency from explore
* Sync eventbus
* Some cleanup & removal of unused code
* Avoid clearing queries when running all empty queries
* Run remaining queries when removing one
* Update snapshots
* fix failing tests
* type cleanup
* Refactor QueryRows
* update snapshot
* Remove highlighter expressions
* minor fixes in queryrows
* remove unwanted change
* fix failing e2e test
* Persist refId in explore url state
* make traces test slightly more robust
* add test for query duplication
* pass url parameters through context.Context
* fix url param names without colon prefix
* change context params to vars
* replace url vars in tests using new api
* rename vars to params
* add some comments
* rename seturlvars to seturlparams
* Refactor log query handling
* Add link to config page
* Change message about missing xray to alert
* Add xrayTraceLinks
* Fix typo in field name
* Fix tests and lint
* Move test
* Add test for trace id link
* lint
* refactor(Plugins/Admin): add a type for version coming back from the API
* refactor(Plugins/Admin): only add necessary version information to the state
* test(Plugins/Admin): add a mock for a CatalogPlugin
* test(Plugins/ADmin): add a mock for a LocalPlugin
* test(Plugins/Admin): add a test for a RemotePlugin
* test(Plugins/Admin): add helpers for mocking plugin states
* refactor(Plugins/Admin): mock the Redux state instead of the API responses
This makes it simpler to add new test cases and also makes
the tests easier to reason about.
* refactor(Plugins/Admin): mock the Redux state instead of the API responses
* Chore: GetDashboardQuery should be dispatched using DispatchCtx
* Fix after merge
* Changes after review
* Various fixes
* Use GetDashboardCtx function instead of GetDashboard
* Alerting: Refactor & fix unified alerting metrics structure
Fixes and refactors the metrics structure we have for the ngalert service. Now, each component has its own metric struct that includes the JUST the metrics it uses. Additionally, I have fixed the configuration metrics and added new metrics to determine if we have discovered and started all the necessary configurations of an instance.
This allows us to alert on `grafana_alerting_discovered_configurations - grafana_alerting_active_configurations != 0` to know whether an alertmanager instance did not start successfully.
* Created new topic for AWS authentication and fixed broken relrefs.
* Applied suggestion from review.
* Update docs/sources/datasources/aws-cloudwatch/aws-authentication.md
Co-authored-by: Fiona Artiaga <89225282+GrafanaWriter@users.noreply.github.com>
* Applied some suggestions from doc review.
* Applied all doc review.
* Last of the edits, went through and addressed all comments.
Co-authored-by: Fiona Artiaga <89225282+GrafanaWriter@users.noreply.github.com>
* Support `role_attribute_path` for GitLab OAuth
Allow role mapping for GitLab accounts.
Example:
[auth.gitlab]
role_attribute_path = is_admin && 'Admin' || 'Viewer'
* Support `role_attribute_path` for GitLab OAuth
Allow role mapping for GitLab accounts.
Example:
[auth.gitlab]
role_attribute_path = is_admin && 'Admin' || 'Viewer'
* docs: add docs for role_attribute_path
* Apply suggestions from code review
Co-authored-by: Peter Leitzen <splattael@users.noreply.github.com>
* docs: update example
example should suggest a full configuration
* Apply suggestions from code review
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
* Apply suggestions from code review
Co-authored-by: Fiona Artiaga <89225282+GrafanaWriter@users.noreply.github.com>
* docs: add suggestions from tech writers
Co-authored-by: Henry Sachs <Henry.Sachs@deutschebahn.com>
Co-authored-by: Henry Sachs <henrysachs@gmail.com>
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
Co-authored-by: Fiona Artiaga <89225282+GrafanaWriter@users.noreply.github.com>
The current version of the docs contains a broken link to the GCS docs about signed URLs. The link (since it contains an additional `]`) generates a 404 and also slightly breaks the rendering of the link.
* Navigation: Implement active state for items in the Sidemenu
* Navigation: Improve logic for when link is active and extract isSearchActive into a util function
* Navigation: Implement custom rule for dashboards under /d/ and fix minor bugs
* Navigation: only show first matching active state + strip query params from link urls
* warn on linux
* add warning for grpc plugins
* add windows support
* update go.mod
* reorganize imports
* update naming
* remove Windows logic
* simplify and add check for when UID and EUID don't match
* fix build
* tidy go.mod
* feedback
* cleanup + migrate
Adds a new setting dataproxy.row_limit that allows an operator to limit the
amount of rows being processed/accepted in response to database queries
originating from SQL data sources.
Closes#38975
Ref #39095
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
* Move SplitOpenFn type to grafana-data
* Use panel renderer instead of Timeseries panel for graph in Explore
* rename splitopen props on panel context
* feat(catalog): add update info to PluginListCard
* refactor(catalog): use IconName enum and minor styling changes to PluginHeaderDependencies
* fix(catalog): add a semver range to grafanaVersion for dependency checks in InstallControls
* Introduce response_limit for datasource responses
* Fix lint
* Fix tests
* Add case where limit <= 0 - added parametrized tests
* Add max_bytes_reader.go
* Use new httpclient.MaxBytesReader instead of net/http one
* Fixes according to reviewer's comments
* Add tests for max_bytes_reader
* Add small piece in configuration.md
* Further fixes according to reviewer's comments
* Fix linting - fix test
* fix(@grafana/data): add a missing optional field to the plugin types
* refactor(Plugins/ADmin): use the type from @grafana/data for plugin dependencies
* fix(Datasources/Graphite): add missing `state` to useEffect dependencies
* refactor(Plugins/Admin): remove unnecessary comment
* feat(Plugins/Admin): add plugin and grafana dependencies to the CatalogPluginDetails
* feat(Plugins/ADmin): show Grafana dependency under plugin details
* feat(Plugins/Admin): show grafana and plugin dependencies for a plugin
* test(Plugins/Admin): add a smoke test for plugin dependencies
* refactor(Plugins/Admin): remove unused style from the header
* Alerting: Persist notification log and silences to the database
This removes the dependency of having persistent disk to run grafana alerting. Instead of regularly flushing the notification log and silences to disk we now flush the binary content of those files to the database encoded as a base64 string.
* Normalize alert state name for UI descriptor retrieval
* Bring back alert state and metric values to annotation tooltip
* Make sure alert state is only shown when present
* Update test
* Handle Error alerting satte
* Revert "Prometheus: add functionality to specify desired step interval in dashboards panels (#36422)"
This reverts commit ddf5b65c51.
Co-authored-by: Ivana Huckova <ivana.huckova@gmail.com>
* Revert "Explore: add functionality for supporting different step modes in prometheus (#37829)"
This reverts commit f433cfd8d9.
Co-authored-by: Ivana Huckova <ivana.huckova@gmail.com>
* Revert stepMode BE implementation from #36796
Co-authored-by: "Ivana Huckova" <ivana.huckova@gmail.com>
* feat(Plugins/Catalog): start adding necessary apis
* feat(PLugins/Catalog): add extra helpers for merging local & remote plugins
* feat(Plugins/Catalog): add plugin details as an optional field of CatalogPlugin
* feat(PLugins/Catalog): add scaffolding for the new redux model
* feat(PLugins/Catalog): export reducers based on a feature-flag
* refactor(Plugins/Admin): rename api methods
* feat(Plugin/Catalog): add an api method for fetching a single plugin
* feat(Plugins/Admin): try cleaning stuff around plugin fetching
* ffeat(Plugins/Catalog): return the catalog reducer when the feature flag is set
* refactor(Plugins/Admin): fix typings
* feat(Plugins/Admin): use the new reducer for the browse page
* feat(catalog): introduce selectors to search and filter plugins list
* refactor(Plugins/Details): rename page prop type
* refactor(Plugins/Admin): add a const for a state prefix
* refactor(Plugins/Admin): use the state prefix in the actions
* feat(Plugins/Admin): add types for the requests
* refactor(Plugins/Admin): add request info to the reducer
* refactor(Plugins/Admin): add request handling to the hooks & selectors
* refactor(Plugins/Details): start using the data stored in Redux
* refactor(Plugins/Admin): rename selector to start with "select"
* fix(Plugins/Admin): only fetch plugins once
* refactor(Plugins/Admin): make the tab selection work in details
* refactor(catalog): put back loading and error states in plugin list
* refactor(Plugins/Admin): use CatalogPlugin for <PluginDetailsSignature />
* feat(Plugins/Admin): add an api method for fetching plugin details
* refactor(Plugins/Admin): add action for updating the details
* irefactor(Plugins/Admin): show basic plugin details info
* refactor(Plugin Details): migrate the plugin details header
* refactor(Plugins/Admin): make the config and dashboards tabs work
* refactor(Plugins/Admin): add old reducer state to the new one
* feat(catalog): introduce actions, reducers and hooks for install & uninstall
* refactor(catalog): wire up InstallControls component to redux
* refactor(catalog): move parentUrl inside PluginDetailsHeader and uncomment InstallControls
* feat(catalog): introduce code for plugin updates to install action
* refactor(Plugins/Admin): add backward compatible actions
* test(catalog): update PluginDetails and Browse tests to work with catalog store
* refactor(Plugins/Admin): make the dashboards and panels work again
* refactor(Plugins/Admin): fix linter and typescript errors
* fix(Plugins/Admin): put the local-only plugins to the beginning of the list
* fix(Plugins/Admin): fix the mocks in the tests for PluginDetails
* refactor(Plugins/Admin): remove unecessary hook usePluginsByFilter()
* refactor(Plugins/Admin): extract the useTabs() hook to its own file
* refactor(Plugins/Admin): remove unused helpers and types
* fix(Plugins/Admin): show the first tab when uninstalling an app plugin
This can cause the user to find themselves on a dissappeared tab, as the
config and dashboards tabs are removed.
* fix(catalog): correct logic for checking if activeTabIndex is greater than total tabs
* fix(Plugins/Admin): fix race-condition between fetching plugin details and all plugins
* fix(Plugins): fix strict type errors
* chore(catalog): remove todos
* feat(catalog): render an alert in PluginDetails when a plugin cannot be found
* feat(catalog): use the proper store state
* refactor(Plugins/Admin): fetch local and remote plugins in parallell
Co-authored-by: Marcus Andersson <marcus.andersson@grafana.com>
* style(catalog): fix prettier error in api
* fix(catalog): prevent throwing error if InstallControlsButton is unmounted during install
* refactor(Plugins/Admin): add a separate hook for filtering & sorting plugins
Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>
Co-authored-by: Marcus Andersson <marcus.andersson@grafana.com>
* Transform dataframe to jaeger format
* Transform dataframe to Zipkin format
* Add endpoint type and shared to Zipkin
* Transform dataframe to OTLP format
* Add data tab tests and note in inspector docs
* Remove comments and logs
* Resolve typescript strict errors
* Update docs/sources/explore/explore-inspector.md
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
* Update docs
* Improve OTLP conversion to include service info and additional tags
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
* ReleaseNotes: Updated changelog and release notes for 8.1.3
* ReleaseNotes: Updated changelog and release notes for 8.1.3
Co-authored-by: Erik Sundell <erik.sundell@grafana.com>
* Change templateCaptureValue to support using template functions
This commit changes templateCaptureValue to use float64 for the value
instead of *float64. This change means that annotations and labels can
use the float64 value with functions such as printf and avoid having to
check for nil. It also means that absent values are now printed as 0.
* Use math.NaN() instead of 0 for absent value
Fix region annotations not displayed correctly when returning timeend column
as epoch timestamp and by that making sure that the returned data frame field
named timeend is treated as time type.
Fixes#38533
* convert SQLs to use sdk contracts
* make draft
* postgres
* intermedia
* get datasourceinfo filled at the beginning of the service
* move the interval into package because of cyclict import and fix all postgres tests
* fix mysql test
* fix mssql
* fix the test for pr https://github.com/grafana/grafana/issues/35839
* fix some issue about intervalv2 package
* update sql test
* wire migration for SQLs
* add sqls to the background process
* make it register instead of register and start
* revert formatting
* fix tests
* fix linter
* remove integration test
* Postgres test fix
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
* Re-enable devenv dashboard validation
* Open up dashboard schema composition points
* Introduce composition space at front of scuemata
* Refactor go code to use new composition structure
* Bunch of small cleanups in dashboard.cue
* Enable both base and dist tests of devenv
* Get rid of obsolete CUE loading hacks
* Skip weird failures on these tests
Really don't seem to be testing for what we intend them to be testing
for.
* Dashboard: Fix UID not preserved on import
* Import Dashboard: add e2e test to verify uid is preserved when importing dashboard
* E2e: Use dynamic uid
* Tests: fixes e2e test
* Chore: adds back waits
Co-authored-by: Hugo Häggmark <hugo.haggmark@gmail.com>
* influxdb: influxql: alert: use already-computed interval-value when available
* reverted by-mistake changed import
* simplify code
now we can rely on DataQuery.Interval always being good
* removed unnecessary test
* fix lint-error
* add field type and values preview to picker
* add more details to description
* add icon to Select and specify icons for FieldType
* remove description
* Alerting: Fix alert flapping in the alertmanager
fixes a bug that caused Alerts that are evaluated at low intervals (sub 1 minute), to flap in the Alertmanager.
Mostly due to a combination of `EndsAt` and resend delay.
The Alertmanager uses `EndsAt` as a heuristic to know whenever it should resolve a firing alert, in the case that it hasn't heard
back from the alert generation system.
Because grafana sent the alert with an `EndsAt` which is equal to the `For` of the alert itself,
and we had a hard-coded 1 minute re-send delay (only applicable to firing alerts) this meant that a firing alert would resolve in the Alertmanager before we re-notify that it still firing.
This commit, increases the `EndsAt` by 3x the the resend delay or alert interval (depending on which one is higher). The resendDelay has been decreased to 30 seconds.
* Check navigator property exists before acecssing it
* fix: pass undefined to Intl.DateTimeFormat if no locale can be determined
* Update packages/grafana-data/src/datetime/formats.ts
replacing ternary by or
Co-authored-by: Ashley Harrison <ashharrison90@gmail.com>
Co-authored-by: Ashley Harrison <ashharrison90@gmail.com>
* Add UMLs
* Add rendered diagrams
* Move QueryCtrl to flux
* Remove redundant param in the reducer
* Use named imports for lodash and fix typing for GraphiteTagOperator
* Add missing async/await
* Extract providers to a separate file
* Clean up async await
* Rename controller functions back to main
* Simplify creating actions
* Re-order controller functions
* Separate helpers from actions
* Rename vars
* Simplify helpers
* Move controller methods to state reducers
* Remove docs (they are added in design doc)
* Move actions.ts to state folder
* Add docs
* Add old methods stubs for easier review
* Check how state dependencies will be mapped
* Rename state to store
* Rename state to store
* Rewrite spec tests for Graphite Query Controller
* Update docs
* Update docs
* Add GraphiteTextEditor
* Add play button
* Add AddGraphiteFunction
* Use Segment to simplify AddGraphiteFunction
* Memoize function defs
* Fix useCallback deps
* Update public/app/plugins/datasource/graphite/state/helpers.ts
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
* Update public/app/plugins/datasource/graphite/state/helpers.ts
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
* Update public/app/plugins/datasource/graphite/state/helpers.ts
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
* Update public/app/plugins/datasource/graphite/state/providers.ts
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
* Update public/app/plugins/datasource/graphite/state/providers.ts
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
* Update public/app/plugins/datasource/graphite/state/providers.ts
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
* Update public/app/plugins/datasource/graphite/state/providers.ts
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
* Update public/app/plugins/datasource/graphite/state/providers.ts
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
* Update public/app/plugins/datasource/graphite/state/providers.ts
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
* Add more type definitions
* Remove submitOnClickAwayOption
This behavior is actually needed to remove parameters in functions
* Load function definitions before parsing the target on initial load
* Add button padding
* Fix loading function definitions
* Change targetChanged to updateQuery to avoid mutating state directly
It's also needed for extra refresh/runQuery execution as handleTargetChanged doesn't handle changing the raw query
* Fix updating query after adding a function
* Simplify updating function params
* Migrate function editor to react
* Simplify setting Segment Select min width
* Remove unnecessary changes to SegmentInput
* Extract view logic to a helper and update types definitions
* Clean up types
* Update FuncDef types and add tests
* Show red border for unknown functions
* Autofocus on new params
* Extract params mapping to a helper
* Split code between params and function editor
* Focus on the first param when a function is added even if it's an optional argument
* Add function editor tests
* Remove todo marker
* Fix adding new functions
* Allow empty value in selects for removing function params
* Add placeholders and fix styling
* Add more docs
* Create basic implementation for metrics and tags
* Post merge fixes
These files are not .ts
* Remove mapping to Angular dropdowns
* Simplify mapping tag names, values and operators
* Simplify mapping metrics
* Fix removing tags and autocomplete
* Simplify debouncing providers
* Ensure options are loaded twice and segment is opened
* Remove focusing new segments logic (not supported by React's segment)
* Clean up
* Move debouncing to components
* Simplify mapping to selectable options
* Add docs
* Group all components
* Remove unused controller methods
* Create Dispatch context
* Group Series and Tags Sections
* Create Functions section
* Create Section component
* use getStyles
* remove redundant async/await
* Remove
* remove redundant async/await
* Remove console.log and silent test console output
* Do not display the name of the selected dropdown option
* Move Section to grafana-ui
* Update storybook
* Simplify SectionLabel
* Fix Influx tests
* Fix API Extractor warnings
* Fix API Extractor warnings
* Do not show hidden functions
* Use block docs for better doc generation
* Handle undefined values provided for autocomplete
* Basic integration
* Move creating state to context.tsx
* Update tests
* Rename test
* Clean up dependencies
panel.targets is not needed for interpolation - it happens in the data source itself. It was used only to show query ref in the the dropdown for the segment.
* Update time range when it changes
* Change action name
* Simplify segments cloning
* Remove redundant variable
* Use styles instead of direct css
* Update docs
* Remove angular wrappers
* Remove redundant tests
* Section -> SegmentSection
* Simplify section styling
* Remove redundant div
* Fix unit tests
* Simplify SegmentSection component
* Use theme.spacing
* Use empty label instead of a single space label
* Remove targetFull
It was used in the past two store the query interpolated with sub-queries inside the model and send both to the backed (interpolated and not interpolated). This has been changed though - the logic has been moved away from model to the data source where interpolation happens and now only interpolated query is passed meaning targetFull is not needed anymore.
* Revert "Remove targetFull"
This reverts commit 499f8b33
* Bring back calculating targetFull
* Clean up
* Add missing dep
* Add missing dep in tests
* Fix time range synchronization
* Fix warning message
* Remove unused type
* Synchronize changes to the query
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
* Sidemenu: Refactor TopSectionItem and BottomNavLinks into SideMenuItem
* Update failing snapshot
* BottomSection: Convert tests to RTL + add some extra unit tests
* Setup filter
* Enable filtering users by active in last 30 days
* Add loading state
* Update last active age strings
* Tweak user list
* Use theme spacing
* Improve table's accessibility
* Add more aria-labels
* AccessControl: add one-dimensional permissions to datasources in the backend
* AccessControl: add one-dimensional permissions to datasources in the frontend (#38080)
Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>
* WIP: add delete functionality to playlist
* fixes deleted item to be removed instantly without manual refresh
* update confirmModal to reference playlist name
* refactor confirmModal message to be clear enough
* WIP: some unit tests for the playlistPage
* added more tests and did some cleanup
* some code refactoring
* adds ability for user roles to control playlist delete
* some abstraction to cleanup code
* modified alert message for delete button to correspond with action
* tried a better approach to modify the alert message
* fixes playlist lookup on each render
* update handlers to not use anonymous function
* exposed getBackendSrv().get api to fetch all playlist
* used better naming convention
* removes unecessary async/await construct
* some code refactoring
* used the correct param structure
* LibraryPanels: Separates name from panel title
* WIP
* Chore: fixes update for duplicate lib panels
* Chore: reverts implementation
* Chore: show library options only for library panels
* Chore: ui fixes after PR comments
* Chore: fixes issue when creating library panels
* Add encryption service
* Add tests for encryption service
* Inject encryption service into http server
* Replace encryption global function usage in login tests
* Migrate to Wire
* Move Encryption bindings to OSS Wire set
* Chore: Refactor securedata to remove global encryption calls from dashboard snapshots
* Fix dashboard snapshot tests
* Remove no longer user test
* Add dashboard snapshots service tests
* Refactor service initialization
* Set up dashboard snapshots service as a background service
Co-authored-by: Tania B <yalyna.ts@gmail.com>
Co-authored-by: Emil Tullstedt <emil.tullstedt@grafana.com>
* now to get it to build
* modified names, added the 455 day case, and added a comment
* removed wireguard override i used for my local
* updated the docs
* add key/value store service
* don't export kvStoreSQL, consumers should interact with KVStore & NamespacedKVStore
* add del method, avoid ErrNotFound (#38627)
* switch value column to medium text
Co-authored-by: Alexander Emelin <frvzmb@gmail.com>
* Add encryption service
* Add tests for encryption service
* Inject encryption service into http server
* Replace encryption global function usage in login tests
* Refactor UpdatePluginSetting
* Refactor EncryptSecureSettings
* Fix wire.go
* Refactor service initialization
Co-authored-by: Joan López de la Franca Beltran <joanjan14@gmail.com>
Co-authored-by: Joan López de la Franca Beltran <5459617+joanlopez@users.noreply.github.com>
Co-authored-by: Emil Tullstedt <emil.tullstedt@grafana.com>
* Add encryption service
* Add tests for encryption service
* Inject encryption service into http server
* Replace encryption global function usage in login tests
* Migrate to Wire
* Refactor authinfoservice to use encryption service
Co-authored-by: Joan López de la Franca Beltran <joanjan14@gmail.com>
Co-authored-by: Joan López de la Franca Beltran <5459617+joanlopez@users.noreply.github.com>
Co-authored-by: Emil Tullstedt <emil.tullstedt@grafana.com>
* prometheus: add monaco-based query-field
for now it is behind a feature-flag
* added new trigger character
* better separate grafana-specifc and prom-specific code
* better styling
* more styling
* more styling
* simpler monaco-import
* better imports
* simplified code
* simplified type imports
* refactor: group completion-provider files together
* renamed type
* simplify type-import
Co-authored-by: Piotr Jamróz <pm.jamroz@gmail.com>
* handle no-metric-name autocompletes
* updated comment
Co-authored-by: Piotr Jamróz <pm.jamroz@gmail.com>
* build(webpack): bump to v5 and successful yarn start compilation
* build(webpack): update postcss dependencies
* build(webpack): silence warnings about hash renamed to fullhash
* build(webpack): enable persistent cache to store generated webpack modules / chunks
* build(webpack): prefer eslintWebpackPlugin over tschecker so eslint doesn't block typechecking
* chore(yarn): run yarn-deduplicate to clean up dependencies
* chore(yarn): refresh lock file after clean install
* build(webpack): prefer output.clean over CleanWebpackPlugin
* build(webpack): prefer esbuild over babel-loader for dev config
* build(babel): turn off cache compression to improve build performance
* build(webpack): get production builds working
* build(webpack): remove phantomJS (removed from grafana in v7) specific loader
* build(webpack): put back babel for dev builds no performance gain in using esbuild in webpack
* build(webpack): prefer terser and optimise css plugins for prod. slower but smaller bundles
* build(webpack): clean up redundant code. inform postcss about node_modules
* build(webpack): remove deprecation warnings flag
* build(webpack): bump packages, dev performance optimisations, attempt to get hot working
* chore(storybook): use webpack 5 for dev and production builds
* build(storybook): speed up dev build
* chore(yarn): refresh lock file
* chore(webpack): bump webpack and related deps to latest
* refactor(webpack): put back inline-source-map, move start scripts out of grafana toolkit
* feat(webpack): prefer react-refresh over react-hot-loader
* build(webpack): update webpack.hot to use react-refresh
* chore: remove react-hot-loader from codebase
* refactor(queryeditorrow): fix circular dependency causing react-fast-refresh errors
* revert(webpack): remove stats.errorDetails from common config
* build(webpack): bump to v5 and successful yarn start compilation
* build(webpack): update postcss dependencies
* build(webpack): silence warnings about hash renamed to fullhash
* build(webpack): enable persistent cache to store generated webpack modules / chunks
* build(webpack): prefer eslintWebpackPlugin over tschecker so eslint doesn't block typechecking
* chore(yarn): run yarn-deduplicate to clean up dependencies
* chore(yarn): refresh lock file after clean install
* build(webpack): prefer output.clean over CleanWebpackPlugin
* build(webpack): prefer esbuild over babel-loader for dev config
* build(babel): turn off cache compression to improve build performance
* build(webpack): get production builds working
* build(webpack): remove phantomJS (removed from grafana in v7) specific loader
* build(webpack): put back babel for dev builds no performance gain in using esbuild in webpack
* build(webpack): prefer terser and optimise css plugins for prod. slower but smaller bundles
* build(webpack): clean up redundant code. inform postcss about node_modules
* build(webpack): remove deprecation warnings flag
* build(webpack): bump packages, dev performance optimisations, attempt to get hot working
* chore(storybook): use webpack 5 for dev and production builds
* build(storybook): speed up dev build
* chore(yarn): refresh lock file
* chore(webpack): bump webpack and related deps to latest
* refactor(webpack): put back inline-source-map, move start scripts out of grafana toolkit
* feat(webpack): prefer react-refresh over react-hot-loader
* build(webpack): update webpack.hot to use react-refresh
* chore: remove react-hot-loader from codebase
* refactor(queryeditorrow): fix circular dependency causing react-fast-refresh errors
* revert(webpack): remove stats.errorDetails from common config
* revert(webpack): remove include from babel-loader so symlinks (enterprise) work as before
* refactor(webpack): fix deprecation warnings in prod builds
* fix(storybook): fix failing builds due to replacing css-optimise webpack plugin
* fix(storybook): use raw-loader for svg icons
* build(webpack): fix dev script colors error
* chore(webpack): bump css-loader and react-refresh-webpack-plugin to latest versions
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
* Sidemenu: Attempt to refactor BottomNavLinks to use SideMenuDropDown
* BottomNavLinks: Rewrite existing enzyme tests in RTL
* BottomNavLinks: Use object spreading instead of slicing
* Update to golang 1.17
* Further updates
* Run go mod tidy on go 1.17
* Apply suggestions from code review
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
* Use build-container:1.4.2
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
* Add encryption service
* Add tests for encryption service
* Inject encryption service into http server
* Replace encryption global function usage in login tests
* Apply suggestions from code review
Co-authored-by: Emil Tullstedt <emil.tullstedt@grafana.com>
* Migrate to Wire
* Undo non-desired changes
* Move Encryption bindings to OSS Wire set
Co-authored-by: Joan López de la Franca Beltran <joanjan14@gmail.com>
Co-authored-by: Joan López de la Franca Beltran <5459617+joanlopez@users.noreply.github.com>
Co-authored-by: Emil Tullstedt <emil.tullstedt@grafana.com>
* refaactor: extract the tab labels into a const
* feat: list - show signature badge for enterprise plugins as well
* feat(plugins): add a component for showing plugin signature details
* feat: add a component for showing signature info under details
* feat: add a component for displaying signature info in details header
* feat: extract the plugin details header into a separate component
* feat: show signature information on the plugins details page
* refactor(Plugins): use an enum instead of an object
* refactor(Plugins): use more strict typing for tabs
* refactor(Plugins): use function declaration instead of fat-arrow for components
* fix(Plugins): fix typo
* fix: make installed plugin config an optional param again
* refactor: cache plugin meta requests
* refactor: move PLUGIN_TAB_LABELS to the types module
* simplify some dependency injection in macaron
* remove unused internal server error handler from macaron
* remove internal server error handler from the router
* remove unused combo router api
* remove unused parts of the macaron router
* export datetimepicker
* minor fixes to the datetime picker
* correct datetime to picker
* move datetime calc to function
* set maxDate
* set maxDate
* wrap in useCallback
* TimeSeries: Use graph min/max as baseis for percentage threshold calculation.
* respect hard and soft axis limits for % threshold steps
* revert state-timeline changes
* enable by-threshold coloring in histogram and barchart
* revert yMin
Co-authored-by: Leon Sorokin <leeoniya@gmail.com>
* outline string to time
add stringToTime transformer
start to add format
add type and dateformat
rename stringToTime to fieldConversion
add more type support and use FieldNamePicker
add field conversion transformation
* adjust for performance feedback
rename and adjust labels and widths
shorten labels and null values
rename to convertFieldType
update test
* make updates
* Allow grid lines visibility control to XYChart and TimeSeries
* Move grid lines config to field config (axis)
* Fix merge
* Auto grid mode
* Fix ts
* Align naming
* Update packages/grafana-ui/src/components/uPlot/config/UPlotConfigBuilder.test.ts
Co-authored-by: Zoltán Bedi <zoltan.bedi@gmail.com>
* Update packages/grafana-ui/src/components/uPlot/config/UPlotConfigBuilder.test.ts
Co-authored-by: Zoltán Bedi <zoltan.bedi@gmail.com>
* remove 'grid' from props diff array since field.config.custom.* is handled by structureRev diffing
Co-authored-by: Zoltán Bedi <zoltan.bedi@gmail.com>
Co-authored-by: Leon Sorokin <leeoniya@gmail.com>
* Removed an unecessary webhook listing and modified some text to reduce promotion for specific tooling.
* Updated doc content with Eve and Ursula's review.
* Removed "the".
Co-authored-by: achatterjee-grafana <aparajita.chatterjee@grafana.com>
* Jaeger: add empty callback to QueryField onBlur to stop query from being run twice
* Jaeger: add wait call on 500ms to accomodate for debouncing by the QueryField component
* SideMenuDropDown: Refactor to be more component-ey + rewrite tests in RTL
* SideMenuDropDown: Rename childLinks -> items
* Rename mockChildLinks -> mockItems as well
Skipping TestDevenvDashboardValidity test for now to resolve broken
test-backend step in main/branches. Did also run scripts/stripnulls.sh
hence the devenv dashboard changes.
* Refactor dependencies
* Regenerate drone.yml
* Reorder steps in starlark files
* Make build depend on test
* Make test steps depend on lint
* Make gen-version step depend on build steps
* Refactor step dependencies
* Move e2e-tests step before upload_cdn
* Sync with main
* Add short url validation
Path should not contain string ../
* Update pkg/api/short_url.go
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
* Moved Visualizations folder one level up. Fixed a bunch of broken relrefs.
* More broken relrefs.
* Fixed the last of the broken relrefs
* Adjusted weight and added alias.
* Added aliases to a bunch of visualization topics.
* More topics with aliases.
* More aliases, adjusted some weight and other metadata information.
* new warning and success color in light theme, slight tweak to primary text
* changed hover opacity to the same as focues opacity
* Updated generated files
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
* Relocate dashboard scuemata to grafana-schema
* Update assorted tests, vars with dashboard path
* Remove crufty commented var
* Not sure...why that failed
* Remove prefix from base dashboard path var
* Move cue/ui remnants into grafana-schema
* Update import paths in plugin models
* Remove mudball, add package statements
* Remove cuegen.sh
Wooooo we ain't got no codegen
* Revert "Remove mudball, add package statements"
This reverts commit 9bed3098f1.
* Tidy up all the cue files
* Move dashboard scuemata into scuemata/ subdir
Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
* Jaeger: add QueryField component
* Remove unused imports
* Fix e2e test so that it checks for QueryField component
* Remove comments
* Fix failing e2e test
* QueryEditor: Don't use _.defaults as it mutates the query prop directly
* QueryEditor: Update the query type on mount if none exists
* QueryEditor: Mutate in the constructor instead of render
* Apply defaults immutably in render
* Provide correct link for AGPL license
* Change LicenseURL to point go Grafana OSS page
* Keep utm_source query parameter
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
* Refactor dependencies
* Regenerate drone.yml
* Reorder steps in starlark files
* Make build depend on test
* Make test steps depend on lint
* Make gen-version step depend on build steps
* new warning and success color in light theme, slight tweak to primary text
* Update generated light theme scss
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
Introduces org-level isolation for the Alertmanager and its components.
Silences, Alerts and Contact points are not separated by org and are not shared between them.
Co-authored with @davidmparrott and @papagian
* add a more flexible way to create permissions
* update interface for accesscontrol to use new eval interface
* use new eval interface
* update middleware to use new eval interface
* remove evaluator function and move metrics to service
* add tests for accesscontrol middleware
* Remove failed function from interface and update inejct to create a new
evaluator
* Change name
* Support Several sopes for a permission
* use evaluator and update fakeAccessControl
* Implement String that will return string representation of permissions
for an evaluator
Co-authored-by: Gabriel MABILLE <gamab@users.noreply.github.com>
Co-authored-by: Emil Tullstedt <emil.tullstedt@grafana.com>
* Make the evaluator prefix match only
* Handle empty scopes
* Bump version of settings read role
Co-authored-by: Karl Persson <kalle.persson@grafana.com>
* Annotation Panel: Fix annotation with end time not being centered
* Update public/app/plugins/panel/annolist/AnnoListPanel.tsx
Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
* Add check before delete org
* Fix comment
* Simpify check if signed in user belongs to the org
* Add check on login if user has and existing org
change error code to 400, when org can not be deleted
* Roll back last commit, regarding an different issue
* update base alpine version and update apk packages in Dockerfile
* update base alpine version
* don't need to apk update
* remove space
* Update to alpine 3.14.1
Co-authored-by: Malcolm Holmes <mdh@odoko.co.uk>
Even without the ability to control the sort order or to filter, this notably improves usability for long lists of notification channels.
Partially fixes#20067.
* Group alertmangaer alerts by custom grouping
* Filter am groups
* Style filter components
* Style filter bar and add clear functionality
* rename components to alert group
* use query params for group filters
* filter style improvements
* add tests for group by
* Add grouping banner to better highlight groupings
* clean up hook logic
* Convert tag values returned as numbers to string
This is a bug in Graphite <= 1.1.7. Since 1.1.8 all values are converted to strings.
* Simplify type conversions
* Fix linting errors
* Add Tempo search behind feature flag
* Add query fields for Tempo search
* Only show loki search if a logs-to-traces datasource is set up
* Refactor tempo search to use separate fields for service name, span name, and tags
* Add tests to buildSearchQuery
* Move search to separate component and rename type to native search
* Improve Tempo tokenizer syntax
* Postgres: For template queries return [] and not error
* remove the console error
* update mssql and mysql
Co-authored-by: Ying WANG <ying.wang@grafana.com>
* State timeline: fix mem leak caused by excessive plot re-init
* Update PlotTooltipInterpolator type
* Do not reference config object in the setCursor hook
* fix excessive BarChart re-init caused by shallow diff of text config
* one less error
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
* Add filter parsing to rule list filters
* Add unit tests for label parsing
* Make label operators an enum
* add example for parsing function
* Update labels operator regex
* Use tooltip for query syntax example
* refactor to use Matchers for filtering
* wip: initial alertmanager notifications panel
* Panel for alertmanager notificaitons
* add filtering for notifications list
* remove icon
* rename am notifications to alert groups
* naming fixes
* Feature toggle
* Add toggle for expand all
* add pluralize
* add action buttons
* test work in progress
* Tests for alert groups panel
* Add useEffect for expandAll prop change
* Set panel to alpha state
* Fix colors
* fix polling interval callback
Co-authored-by: Domas <domas.lapinskas@grafana.com>
Co-authored-by: Domas <domas.lapinskas@grafana.com>
* Alerting: update matchers field operators to Select
* Add matcher field to routes
* fix default values
* min-width for matcher operator
* dry up matcher field options
* change MatcherField name to MatcherValue
* Add UMLs
* Add rendered diagrams
* Move QueryCtrl to flux
* Remove redundant param in the reducer
* Use named imports for lodash and fix typing for GraphiteTagOperator
* Add missing async/await
* Extract providers to a separate file
* Clean up async await
* Rename controller functions back to main
* Simplify creating actions
* Re-order controller functions
* Separate helpers from actions
* Rename vars
* Simplify helpers
* Move controller methods to state reducers
* Remove docs (they are added in design doc)
* Move actions.ts to state folder
* Add docs
* Add old methods stubs for easier review
* Check how state dependencies will be mapped
* Rename state to store
* Rename state to store
* Rewrite spec tests for Graphite Query Controller
* Update docs
* Update docs
* Add GraphiteTextEditor
* Add play button
* Add AddGraphiteFunction
* Use Segment to simplify AddGraphiteFunction
* Memoize function defs
* Fix useCallback deps
* Update public/app/plugins/datasource/graphite/state/helpers.ts
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
* Update public/app/plugins/datasource/graphite/state/helpers.ts
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
* Update public/app/plugins/datasource/graphite/state/helpers.ts
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
* Update public/app/plugins/datasource/graphite/state/providers.ts
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
* Update public/app/plugins/datasource/graphite/state/providers.ts
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
* Update public/app/plugins/datasource/graphite/state/providers.ts
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
* Update public/app/plugins/datasource/graphite/state/providers.ts
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
* Update public/app/plugins/datasource/graphite/state/providers.ts
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
* Update public/app/plugins/datasource/graphite/state/providers.ts
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
* Add more type definitions
* Remove submitOnClickAwayOption
This behavior is actually needed to remove parameters in functions
* Load function definitions before parsing the target on initial load
* Add button padding
* Fix loading function definitions
* Change targetChanged to updateQuery to avoid mutating state directly
It's also needed for extra refresh/runQuery execution as handleTargetChanged doesn't handle changing the raw query
* Fix updating query after adding a function
* Simplify updating function params
* Migrate function editor to react
* Simplify setting Segment Select min width
* Remove unnecessary changes to SegmentInput
* Extract view logic to a helper and update types definitions
* Clean up types
* Update FuncDef types and add tests
* Show red border for unknown functions
* Autofocus on new params
* Extract params mapping to a helper
* Split code between params and function editor
* Focus on the first param when a function is added even if it's an optional argument
* Add function editor tests
* Remove todo marker
* Fix adding new functions
* Allow empty value in selects for removing function params
* Add placeholders and fix styling
* Add more docs
* Create basic implementation for metrics and tags
* Post merge fixes
These files are not .ts
* Remove mapping to Angular dropdowns
* Simplify mapping tag names, values and operators
* Simplify mapping metrics
* Fix removing tags and autocomplete
* Simplify debouncing providers
* Ensure options are loaded twice and segment is opened
* Remove focusing new segments logic (not supported by React's segment)
* Clean up
* Move debouncing to components
* Simplify mapping to selectable options
* Add docs
* Group all components
* Remove unused controller methods
* Create Dispatch context
* Group Series and Tags Sections
* Create Functions section
* Create Section component
* use getStyles
* remove redundant async/await
* Remove
* remove redundant async/await
* Remove console.log and silent test console output
* Do not display the name of the selected dropdown option
* Move Section to grafana-ui
* Update storybook
* Simplify SectionLabel
* Fix Influx tests
* Fix API Extractor warnings
* Fix API Extractor warnings
* Do not show hidden functions
* Use block docs for better doc generation
* Handle undefined values provided for autocomplete
* Section -> SegmentSection
* Simplify section styling
* Remove redundant div
* Simplify SegmentSection component
* Use theme.spacing
* Use empty label instead of a single space label
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
* Fix jsdoc description for datasourceRequest
* Align default subscription width with other fields
* AzureMonitor: Show error message when requesting default subscriptions in ConfigEditor
* update snapshots:
This commit adds contact point testing to ngalerts via a new API
endpoint. This endpoint accepts JSON containing a list of
receiver configurations which are validated and then tested
with a notification for a test alert. The endpoint returns JSON
for each receiver with a status and error message. It accepts
a configurable timeout via the Request-Timeout header (in seconds)
up to a maximum of 30 seconds.
* move query migrations out of the angular controller
* Migrate queries in QueryEditor
* finish up migrations
* update deprecated comment
* remove comment
* Strip nulls (again)
* Add stripnulls script
* Add transformations field
* Close FieldConfig struct; proper plugin validating
* s/graph/viz/ field in histogram dashboard
* Use ui.GraphFieldConfig in histogram model
* Add models for stat, gauge, barguage panel plugins
Also toss necessary shared types into cue/ui/gen.cue, with TODOs to move
them appropriately later.
* Add required license headers
* Heap of updates to cue UI components
* Fix barchart types and one old devenv input
* Use the GraphFieldConfig directly for timeseries
* Add models.cue for a few panel plugins
Barchart, state-timeline, and status-history
* Enable the test validating all devenv dashboards!!
* Fix effects of not checking after making comments
* Update packages/grafana-ui/src/options/models.gen.ts
Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
* Realign and unalign cue with ts types
* Update devenv test to sniff for null errors
Best option we have right now for helping people to know they need to
strip nulls from devenv dashboards.
* Add speculative default for barchart stacking
* Fixup some dated devenv dashboards
timeline-modes needed to be regenerated with the appropriate tooltip
values included, per typing requirements, and timeline-demo needed to
have the `mode` field removed, as it is not intended to be persisted.
* Add necessary missing options for various panels
* Regenerate devenv dashboards
Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
* Add input to specify min step
* Add stepInterval to as input to component
* Add onBlur to Input component
* Loki: add functionality for min step
* Loki: change name on props to step to make it more clear
* Loki: add resolution as a query option
* Loki: Add min,max,exact as step options
* Loki: add functionality for different step modes
* Loki: fix bug where step function isn't working
* Loki: fix bug where exact step isn't working
* Loki: change width of step input field
* Loki: add tests for adjustInterval function
* Loki: add check for max step oprio to make sure it's not below the safe interval
* Loki: fix bug with some tests
* Loki: fix bug with tests
* Explore: add tooltip to loki step function
* Loki: remove resolution as a logs option
* Loki: update snapshots
* Fix failing tests
* Loki: add select component for choosing resolution
* Loki: add functionality for calculating correct interval with resolution applied
* Loki: remove functionality for step mode
* Loki: remove tests for step mode
* Loki: add tooltip to line limit and resolution
* Loki: add backend support for resolution
* Loki: fixed backend bug where resolution was undefined
* Loki: add check for resolution
* Add deep link in ARG
* add soverigh clouds
* add query to Azure portal link
* move deep link to backend
* cloud specific to ARG
* Add unit test
* fix lint
* fix escape issue
* use constant & fix test
* fix constant & use pathEscape
* use cmp.Equal for test
* GraphNG: account for top canvas padding in gradient gen for color scheme/thresholds-by-value
* Updated test dashboard
* Added fix for issue when scaleMin was same as threshold
* fixed firefox issue
* revert docs changes
* update gdev dash for easier comparisons & regression spotting
* refactor
* optimize gradient re-gen/re-use and color more tinycolor.setAlpha() -> alpha(). update uPlot to dev build.
* fix percentage steps
* implement % threshold region rendering
* crisp threshold line rendering
* simplify
* WIP: hoverpoint dynamic color interpolation
* fix hover point color interp
* re-use gradient gen to draw threshold areas
* re-implement by-value color scales
* tweak comment
* mimic tinycolor behavior in colorManipulator.alpha() for empty colors
* explicitly disable hover points for BarChart and Histogram
* reduce test failures and required changes to tests
* fix barchart tests
* uPlot 1.6.15
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
* Fixes wrong annotation when opening dashboard with URL encoded variable
Co-authored-by: Ashley Harrison, Hugo Haggmark, and Tobias Skarhed.
* added a more descriptive comment
* Alerting: Expose discovered and dropped Alertmanagers
Exposes the API for discovered and dropped Alertmanagers.
* make admin config poll interval configurable
* update after rebase
* wordsmith
* More wordsmithing
* change name of the config
* settings package too
* complete the data model of graph panel
* fix histogram graph
* fix timeseries panel type
* Update cue/ui/gen.cue
Co-authored-by: sam boyer <sam.boyer@grafana.com>
* fix graph/viz and gradientMode enum
* add the changes into cue component and remove fields for graph panel
Co-authored-by: sam boyer <sam.boyer@grafana.com>
* Alerting: modify table and accessors to limit org access appropriately
* Update migration to create multiple Alertmanager configs
* Apply suggestions from code review
Co-authored-by: gotjosh <josue@grafana.com>
* replace mg.ClearMigrationEntry()
mg.ClearMigrationEntry() would create a new session.
This commit introduces a new migration for clearing an entry from migration log for replacing mg.ClearMigrationEntry() so that all dashboard alert migration operations will run inside the same transaction.
It adds also `SkipMigrationLog()` in Migrator interface for skipping adding an entry in the migration_log.
Co-authored-by: gotjosh <josue@grafana.com>
* Add UMLs
* Add rendered diagrams
* Move QueryCtrl to flux
* Remove redundant param in the reducer
* Use named imports for lodash and fix typing for GraphiteTagOperator
* Add missing async/await
* Extract providers to a separate file
* Clean up async await
* Rename controller functions back to main
* Simplify creating actions
* Re-order controller functions
* Separate helpers from actions
* Rename vars
* Simplify helpers
* Move controller methods to state reducers
* Remove docs (they are added in design doc)
* Move actions.ts to state folder
* Add docs
* Add old methods stubs for easier review
* Check how state dependencies will be mapped
* Rename state to store
* Rename state to store
* Rewrite spec tests for Graphite Query Controller
* Update docs
* Update docs
* Add GraphiteTextEditor
* Add play button
* Add AddGraphiteFunction
* Use Segment to simplify AddGraphiteFunction
* Memoize function defs
* Fix useCallback deps
* Update public/app/plugins/datasource/graphite/state/helpers.ts
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
* Update public/app/plugins/datasource/graphite/state/helpers.ts
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
* Update public/app/plugins/datasource/graphite/state/helpers.ts
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
* Update public/app/plugins/datasource/graphite/state/providers.ts
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
* Update public/app/plugins/datasource/graphite/state/providers.ts
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
* Update public/app/plugins/datasource/graphite/state/providers.ts
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
* Update public/app/plugins/datasource/graphite/state/providers.ts
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
* Update public/app/plugins/datasource/graphite/state/providers.ts
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
* Update public/app/plugins/datasource/graphite/state/providers.ts
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
* Add more type definitions
* Remove submitOnClickAwayOption
This behavior is actually needed to remove parameters in functions
* Load function definitions before parsing the target on initial load
* Add button padding
* Fix loading function definitions
* Change targetChanged to updateQuery to avoid mutating state directly
It's also needed for extra refresh/runQuery execution as handleTargetChanged doesn't handle changing the raw query
* Fix updating query after adding a function
* Simplify updating function params
* Migrate function editor to react
* Simplify setting Segment Select min width
* Remove unnecessary changes to SegmentInput
* Extract view logic to a helper and update types definitions
* Clean up types
* Update FuncDef types and add tests
* Show red border for unknown functions
* Autofocus on new params
* Extract params mapping to a helper
* Split code between params and function editor
* Focus on the first param when a function is added even if it's an optional argument
* Add function editor tests
* Remove todo marker
* Fix adding new functions
* Allow empty value in selects for removing function params
* Add placeholders and fix styling
* Add more docs
* Create basic implementation for metrics and tags
* Post merge fixes
These files are not .ts
* Remove mapping to Angular dropdowns
* Simplify mapping tag names, values and operators
* Simplify mapping metrics
* Fix removing tags and autocomplete
* Simplify debouncing providers
* Ensure options are loaded twice and segment is opened
* Remove focusing new segments logic (not supported by React's segment)
* Clean up
* Move debouncing to components
* Simplify mapping to selectable options
* Add docs
* use getStyles
* remove redundant async/await
* Remove
* remove redundant async/await
* Remove console.log and silent test console output
* Do not display the name of the selected dropdown option
* Use block docs for better doc generation
* Handle undefined values provided for autocomplete
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
* Tooltip: add hasMs flag for system dateTime format
* Tooltip: display ms in sub minute time range
* Tooltip: add field check, increase range on tests
* Add diffrentiating test
* minimize parsing to string values
Co-authored-by: Oscar Kilhed <oscar.kilhed@grafana.com>
* Remove null values from JSON
* Specify the color field
* Add note about openness of custom field's struct
* Update schemaVersion
* Specify thresholds
* Add panel id
* Add maxDataPoints and interval
* Add mappings, albeit very under-specified
* Allow empty string for timezone field
This is probably not a good idea - same as allowing nulls.
* Allow false for refresh - otherwise, string
* Make threshold value optional
* Make interval optional
* Fix broken and changed decls in ui models
* Add models.cue for timeseries panel
* Fixups for home dashboard
* Add timeShift, timeFrom
* Abstract out #Target, rejigger comments
* Alerting: Send alerts to external Alertmanager(s)
Within this PR we're adding support for registering or unregistering
sending to a set of external alertmanagers. A few of the things that are
going are:
- Introduce a new table to hold "admin" (either org or global)
configuration we can change at runtime.
- A new periodic check that polls for this configuration and adjusts the
"senders" accordingly.
- Introduces a new concept of "senders" that are responsible for
shipping the alerts to the external Alertmanager(s). In a nutshell,
this is the Prometheus notifier (the one in charge of sending the alert)
mapped to a multi-tenant map.
There are a few code movements here and there but those are minor, I
tried to keep things intact as much as possible so that we could have an
easier diff.
* Pass Access info to datasourceInstance
* Update packages/grafana-data/src/types/datasource.ts
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
* Type access as direct | proxy
* Fix tests where mocking datasourceInstance, include access
* Pass access to data source instance mocks
* Update comment
* Pass access to data source instance mocks
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
* Refactor loki to use SDK contracts
* Register with service name
* Initialize interval calculator
* Return always created result
* Use go library instead of simplejson
* Update pkg/tsdb/loki/loki.go
Co-authored-by: Ivana Huckova <30407135+ivanahuckova@users.noreply.github.com>
* Remove newline
* Merge with main
Co-authored-by: Ivana Huckova <30407135+ivanahuckova@users.noreply.github.com>
* Add select component for choosing step option
* Add onStepChange
* Add functionality for max step
* Rename minInterval to stepInterval to describe min, max and exact step interval
* Change select option from standard to exact
* Add new type StepType for better type safety
* Add tests for adjustInterval
* Add functionality and tests for exact step option
* Prometheus: Spell out min and max in select component
* Prometheus: Change width of step select component and add placeholder
* Prometheus: Adjust for the factor in exact step
* Prometheus: Update tooltip of step lable to include max and exact options and add padding to select component to give it some breathing room from other components
* Update snapshot for step tooltip
* Prometheus: make tooltip more informative
* Prometheus: add tooltip to interval input element
* Prometheus: extract default step option
* Prometheus: update snapshot for PromQueryEditor
* Prometheus: change step labels to uppercase
* Prometheus: define a default step option
* Prometheus: use default step option in both ui component and logic
* Prometheus: update snapshot for PromQueryEditor
* Prometheus: refactor datasource.ts for better readability
* Prometheus: change tool tip for step
* Prometheus: update snapshots
* Prometheus: add correct styling
* Prometheus: update snapshots
* Prometheus change variable name to something less superfluous
* Prometheus: refactor
* Prometheus: add new test for adjustInterval
* Docs: Update docummentation on the step parameter for prometheus
* Prometheus: make step input field smaller and change placeholder text to 15s
* Prometheus: update snapshots
* Prometheus: Make stepMode uniform in all places in the code
* Adjust step based on stepMode
* Adjust comment
* Check if we have queryInterval
* Refactor, add safe interval
* Fix merge resolutions
* Fix tests and add tests
* Update snapshot
* Update docs/sources/datasources/prometheus.md
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
* Update docs/sources/datasources/prometheus.md
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
* Update docs/sources/datasources/prometheus.md
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
* Update docs/sources/datasources/prometheus.md
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
* Update docs/sources/datasources/prometheus.md
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
* Update docs/sources/datasources/prometheus.md
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
* Update docs/sources/datasources/prometheus.md
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
* Implement calculation with intervalMode in calculator.go
* Update tests, add calculate safe interval method
* Replace panic with error
* Update pkg/tsdb/interval/interval_test.go
Co-authored-by: idafurjes <36131195+idafurjes@users.noreply.github.com>
* Update pkg/tsdb/calculator_test.go
Co-authored-by: idafurjes <36131195+idafurjes@users.noreply.github.com>
* Impotrt require
* Remove lint errors
Co-authored-by: Olof Bourghardt <ob655088@gmail.com>
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
Co-authored-by: idafurjes <36131195+idafurjes@users.noreply.github.com>
* feat(catalog): lazy load and add alt text to plugin logos
* refactor(catalog): use plugin types, make sure data is available for new ui
* test(catalog): fix up tests after types refactor
* feat(catalog): introduce Tile and PluginBadge components for ui updates
* refactor(catalog): update PluginList to use new components, lazy load images, add creditcard icon
* test(catalog): update Browse.test types
* fix(catalog): if local and remote make sure to get the correct local plugin from array
* refactor(catalog): prefer grafana/ui components over custom Tile component
* chore(catalog): delete redundant components
* feat(catalog): introduce ascending descending name sort for Browse
* refactor(catalog): prefer theme spacing over hardcoded values
* refactor(catalog): update Local and Remote plugin types to match api responses
* fix(catalog): prefer local.hasUpdate and local.signature so updateable plugin signature is valid
* test(catalog): update test plugin mocks
* test(catalog): add tests for sorting and categorise
* test(catalog): add tests for plugin cards, remove grid component
* test(catalog): add tests for PluginBadges component
* refactor(catalog): change enterprise learn more link to open plugin page on website
* simplify toggle + add link to server admin
* feat(catalog): org admins can configure plugin apps, cannot install/uninstall plugins
* fix(catalog): dont show buttons if user doesn't have install permissions
* feat(catalog): cater for accessing catalog via /plugins and /admin/plugins
* feat(catalog): use location for list links and match.url to define breadcrumb links
* test(catalog): mock isGrafanaAdmin for PluginDetails tests
* test(catalog): preserve default bootdata in PluginDetails mock
* refactor(catalog): move orgAdmin check out of state and make easier to reason with
Co-authored-by: Will Browne <will.browne@grafana.com>
* Add low hanging aria markup
* Add a list of radio buttons
* Add ref to put focus
* Add landmark markup
* Add labels to icon buttons
* Add radio button groupings
* Add keyboard focus styles
* Improve markup
* Update test selector
* Remove testid in favor of text
* Fiddle around with test labels
* Get correct testid selector
* Add aria-expanded to button
* Change order of quick select for keyboard nav
* Create headings for easier heading navigation
* Add another h3
* Add testid
* Use selectors in e2e test
* Add dataid selector for narrow absolute button
* Update e2e test with proper selectors
* Add more verbose aria-label
* Change editor to picker
* Split query modifications into seperate file
* seperate setQueryValue for Logs
* wip for centralising api requests
* more wip
* moved data hooks out into seperate module, added post-request cleanup
* metric metadata
* ,
* more cleanup
* update tests, fix hasOption to work with grouped variables
* update ARG subscriptiopns field
* last select stuff
* remove todo comment
* pr feedback
* more pr feedback :) :)
* updated comment
* TooltipPlugin: add crosshair exception
* TooltipPlugin: set active plot and add class
* Plot: hide cursor pts when not active in crosshair mode
* TooltipPlugin: clean up adding class
* TooltipPlugin: rename crosshair class
* rename class, move up to chart root element
Co-authored-by: Leon Sorokin <leeoniya@gmail.com>
* Additional fix: Resized two images in 8.1 what's new to make them smaller
* Fixed some broken links and deleted another empty Grafana 8 alert topic.
* Replaced reference to troubleshooting with state and health check.
* feat(catalog): introduce additive filters for plugin type, installed status and search
* feat(catalog): prefer FilterInput over custom styled search field
* feat(catalog): update Browse page to use new search, filter features
* refactor(catalog): keep filters with usePluginsByFilter hook
* test(catalog): update tests to reflect new filtering and searching
* refactor(catalog): rearrange filterByType radio buttons
Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
* feat(catalog): ntroduce css for responsive filter layout
* refactor(catalog): introduce pluginfilter type and give filter methods better names
* fix(catalog): default q param to empty string so FiterInput doesn't show clear button on load
Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
* AccessControl: Implement a way to register fixed roles
* Add context to register func
* Use FixedRoleGrantsMap instead of FixedRoleGrants
* Removed FixedRoles map to sync.map
* Wrote test for accesscontrol and provisioning
* Use mutexes+map instead of sync maps
* Create a sync map struct out of a Map and a Mutex
* Create a sync map struct for grants as well
* Validate builtin roles
* Make validation public to access control
* Handle errors consistently with what seeder does
* Keep errors consistant amongst accesscontrol impl
* Handle registration error
* Reverse the registration direction thanks to a RoleRegistrant interface
* Removed sync map in favor for simple maps since registration now happens during init
* Work on the Registrant interface
* Remove the Register Role from the interface to have services returning their registrations instead
* Adding context to RegisterRegistrantsRoles and update descriptions
* little bit of cosmetics
* Making sure provisioning is ran after role registration
* test for role registration
* Change the accesscontrol interface to use a variadic
* check if accesscontrol is enabled
* Add a new test for RegisterFixedRoles and fix assign which was buggy
* Moved RegistrationList def to roles.go
* Change provisioning role's description
* Better comment on RegisterFixedRoles
* Correct comment on ValidateFixedRole
* Simplify helper func to removeRoleHelper
* Add log to saveFixedRole and assignFixedRole
Co-authored-by: Vardan Torosyan <vardants@gmail.com>
Co-authored-by: Jeremy Price <Jeremy.price@grafana.com>
* Updated first half of what's new
* Update docs/sources/whatsnew/whats-new-in-v8-1.md
Fixes for the intro
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
* Moved geomap and annitations panel sections.
* Had to update the intro again, all set now.
* Added more content.
* Updated enterprise section
* Few more changes.
* Fixed annotations image caption.
* minor updates to intro verbiage,
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
Co-authored-by: achatterjee-grafana <aparajita.chatterjee@grafana.com>
* wip
* Auth Info: refactored out into it's own service
* Auth: adds extension point where users are being mapped
* Update pkg/services/login/authinfoservice/service.go
Co-authored-by: Joan López de la Franca Beltran <joanjan14@gmail.com>
* Update pkg/services/login/authinfoservice/service.go
Co-authored-by: Joan López de la Franca Beltran <joanjan14@gmail.com>
* Auth: simplified code
* moved most authinfo stuff to its own package
* added back code
* linter
* simplified
Co-authored-by: Joan López de la Franca Beltran <joanjan14@gmail.com>
* Refactor resample logic
* Adjust test to have one more timestamp out of range
* adjust test + ensure filling
* revert flag flip
* Undo logic - should be timeseries only
* change data calculation based on previous interval
* fix the logics
* fix typo
* fix resample start time, to reuse what sql api returned
* calculate the start point with from truncate by interval
Co-authored-by: Will Browne <will.browne@grafana.com>
Co-authored-by: Will Browne <wbrowne@users.noreply.github.com>
Co-authored-by: Ying WANG <ying.wang@grafana.com>
* Add select component for choosing step option
* Add onStepChange
* Add functionality for max step
* Rename minInterval to stepInterval to describe min, max and exact step interval
* Change select option from standard to exact
* Add new type StepType for better type safety
* Add tests for adjustInterval
* Add functionality and tests for exact step option
* Prometheus: Spell out min and max in select component
* Prometheus: Change width of step select component and add placeholder
* Prometheus: Adjust for the factor in exact step
* Prometheus: Update tooltip of step lable to include max and exact options and add padding to select component to give it some breathing room from other components
* Update snapshot for step tooltip
* Prometheus: make tooltip more informative
* Prometheus: add tooltip to interval input element
* Prometheus: extract default step option
* Prometheus: update snapshot for PromQueryEditor
* Prometheus: change step labels to uppercase
* Prometheus: define a default step option
* Prometheus: use default step option in both ui component and logic
* Prometheus: update snapshot for PromQueryEditor
* Prometheus: refactor datasource.ts for better readability
* Prometheus: change tool tip for step
* Prometheus: update snapshots
* Prometheus: add correct styling
* Prometheus: update snapshots
* Prometheus change variable name to something less superfluous
* Prometheus: refactor
* Prometheus: add new test for adjustInterval
* Docs: Update docummentation on the step parameter for prometheus
* Prometheus: make step input field smaller and change placeholder text to 15s
* Prometheus: update snapshots
* Prometheus: Make stepMode uniform in all places in the code
* Prometheus: update documentation and tooltip for step
* Prometheus: update snapshots
* Add UMLs
* Add rendered diagrams
* Move QueryCtrl to flux
* Remove redundant param in the reducer
* Use named imports for lodash and fix typing for GraphiteTagOperator
* Add missing async/await
* Extract providers to a separate file
* Clean up async await
* Rename controller functions back to main
* Simplify creating actions
* Re-order controller functions
* Separate helpers from actions
* Rename vars
* Simplify helpers
* Move controller methods to state reducers
* Remove docs (they are added in design doc)
* Move actions.ts to state folder
* Add docs
* Add old methods stubs for easier review
* Check how state dependencies will be mapped
* Rename state to store
* Rename state to store
* Rewrite spec tests for Graphite Query Controller
* Update docs
* Update docs
* Add GraphiteTextEditor
* Add play button
* Add AddGraphiteFunction
* Use Segment to simplify AddGraphiteFunction
* Memoize function defs
* Fix useCallback deps
* Update public/app/plugins/datasource/graphite/state/helpers.ts
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
* Update public/app/plugins/datasource/graphite/state/helpers.ts
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
* Update public/app/plugins/datasource/graphite/state/helpers.ts
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
* Update public/app/plugins/datasource/graphite/state/providers.ts
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
* Update public/app/plugins/datasource/graphite/state/providers.ts
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
* Update public/app/plugins/datasource/graphite/state/providers.ts
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
* Update public/app/plugins/datasource/graphite/state/providers.ts
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
* Update public/app/plugins/datasource/graphite/state/providers.ts
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
* Update public/app/plugins/datasource/graphite/state/providers.ts
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
* Add more type definitions
* Remove submitOnClickAwayOption
This behavior is actually needed to remove parameters in functions
* Load function definitions before parsing the target on initial load
* Add button padding
* Fix loading function definitions
* Change targetChanged to updateQuery to avoid mutating state directly
It's also needed for extra refresh/runQuery execution as handleTargetChanged doesn't handle changing the raw query
* Fix updating query after adding a function
* Simplify updating function params
* Migrate function editor to react
* Simplify setting Segment Select min width
* Remove unnecessary changes to SegmentInput
* Extract view logic to a helper and update types definitions
* Clean up types
* Update FuncDef types and add tests
* Show red border for unknown functions
* Autofocus on new params
* Extract params mapping to a helper
* Split code between params and function editor
* Focus on the first param when a function is added even if it's an optional argument
* Add function editor tests
* Remove todo marker
* Fix adding new functions
* Allow empty value in selects for removing function params
* Add placeholders and fix styling
* Add more docs
* Rename .tsx -> .ts
* Update types
* Use ?? instead of || + add test for mapping options
* Use const (let is not needed here)
* Revert test name change
* Allow removing only optional params and mark additional params as optional (only the first one is required)
* Use theme.typography.bodySmall.fontSize
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
* Alerting: Refactor `Run` of the scheduler
A bit of a refactor to make the diff easier to read for supporting
external Alertmanagers.
We'll introduce another routine that checks the database for
configuration and spawns other routines accordingly.
* Block the wait.
* Fix test
Grafana 8.1.0 will include experimental high availability setup support by
using Redis PUB/SUB and data structures for inter-node state sharing.
This commit documents this but also explicitly marks feature as experimental
since integration of Live with Redis may slightly evolve with time as soon as
we get more understanding about Grafana Live usage scenarios.
* Add filter parsing to rule list filters
* Add unit tests for label parsing
* Make label operators an enum
* add example for parsing function
* Update labels operator regex
* Add tests to rule list for filtering
* add additional test for testing alert instances filtering
* Use tooltip for query syntax example
* refactor to use Matchers for filtering
* Update docs for label filtering on rules list
* style fixes
* Color: fix alpha calculation < 16/255 and State-timeline threshold alpha
* SpectrumPalette: Update to getColorByName
* ColorValueEditor: Update to theme2
* SpectrumPalette: Update to theme2
* ColorPickerPopover: Format hex color
* SpectrumPalette: Format hex color
* SpectrumPalette: Refactor hex color alpha helper
* SpectrumPalette: Fix import and update helper
* ColorPickerPopover: Fix test to not make lowercase
Co-authored-by: Leon Sorokin <leeoniya@gmail.com>
Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
* initial attempt at automatic removal of stale states
* test case, need espected states
* finish unit test
* PR feedback
* still multiply by time.second
* pr feedback
* Dropzone component
* Add file list
* Add progress, error and cancelation to filelistitem
* Update Dropzone component to support progress
Cancelation
Retry
* Update file name changes
* Rename to FileDropzone
* FileListItem tests
A11y updates for icon buttons
Use value formatter from grafana/data
* Add tests for FileDropzone
Review comments
* export FileDropzoneDefaultChildren
* Change primary text when multiple false
* Review comments addressed
* Extract remove file to constant
* No need to await after await
* Chore: Fix TypeScript strict errors with components using connect
* Chore: More TypeScript fixes
* Chore: Update strict check values
* Still need to export these types...
* Declare connector at the top of the file
* Careful with find and replace...
* Azure middleware in HttpClientProxy
* Azure authentication under feature flag
* Minor fixes
* Add prefixes to not clash with JsonData
* Return error if JsonData cannot be parsed
* Return original string if URL invalid
* Tests for datasource_cache
* Pass role to Grafana using auth proxy
By default, the role will be applied to the default org of the user.
If the request uses the standard header "X-Grafana-Org-Id", the role will be applied to the specified org
Tested in both unit test and manually E2E
* Address comment: only allow the user role to be applied to the default org
Co-authored-by: Leonard Gram <leo@xlson.com>
* Add UMLs
* Add rendered diagrams
* Move QueryCtrl to flux
* Remove redundant param in the reducer
* Use named imports for lodash and fix typing for GraphiteTagOperator
* Add missing async/await
* Extract providers to a separate file
* Clean up async await
* Rename controller functions back to main
* Simplify creating actions
* Re-order controller functions
* Separate helpers from actions
* Rename vars
* Simplify helpers
* Move controller methods to state reducers
* Remove docs (they are added in design doc)
* Move actions.ts to state folder
* Add docs
* Add old methods stubs for easier review
* Check how state dependencies will be mapped
* Rename state to store
* Rename state to store
* Rewrite spec tests for Graphite Query Controller
* Update docs
* Update docs
* Add GraphiteTextEditor
* Add play button
* Add AddGraphiteFunction
* Use Segment to simplify AddGraphiteFunction
* Memoize function defs
* Fix useCallback deps
* Update public/app/plugins/datasource/graphite/state/helpers.ts
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
* Update public/app/plugins/datasource/graphite/state/helpers.ts
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
* Update public/app/plugins/datasource/graphite/state/helpers.ts
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
* Update public/app/plugins/datasource/graphite/state/providers.ts
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
* Update public/app/plugins/datasource/graphite/state/providers.ts
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
* Update public/app/plugins/datasource/graphite/state/providers.ts
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
* Update public/app/plugins/datasource/graphite/state/providers.ts
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
* Update public/app/plugins/datasource/graphite/state/providers.ts
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
* Update public/app/plugins/datasource/graphite/state/providers.ts
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
* Add more type definitions
* Remove submitOnClickAwayOption
This behavior is actually needed to remove parameters in functions
* Load function definitions before parsing the target on initial load
* Add button padding
* Fix loading function definitions
* Change targetChanged to updateQuery to avoid mutating state directly
It's also needed for extra refresh/runQuery execution as handleTargetChanged doesn't handle changing the raw query
* Fix updating query after adding a function
* Simplify updating function params
* Simplify setting Segment Select min width
* Extract view logic to a helper and update types definitions
* Clean up types
* Update FuncDef types and add tests
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
* feat(catalog): introduce PluginDetailsBody component and useLoadPluginConfig hook
* feat(catalog): use PluginDetailsBody and useLoadPluginConfig hook in PluginDetails
* feat(catalog): introduce usePluginDetails hook to handle PluginDetails state
* feat(catalog): wire usePluginDetails hook to PluginDetails and InstallControls
* refactor(catalog): fix typescript errors related to usePluginDetails hook
* chore(catalog): update types for PluginDetailsActions
* change pie gradient to from colors
* increase label contrast
* Revert "change pie gradient to from colors"
This reverts commit 70d07d8b8e.
* reduce spin values
* dedupe folder option for existing grafana rules
* update test mocks
* change toggle to chevron for expanding error state ui
* fix some strict lint errors
* Add UMLs
* Add rendered diagrams
* Move QueryCtrl to flux
* Remove redundant param in the reducer
* Use named imports for lodash and fix typing for GraphiteTagOperator
* Add missing async/await
* Extract providers to a separate file
* Clean up async await
* Rename controller functions back to main
* Simplify creating actions
* Re-order controller functions
* Separate helpers from actions
* Rename vars
* Simplify helpers
* Move controller methods to state reducers
* Remove docs (they are added in design doc)
* Move actions.ts to state folder
* Add docs
* Add old methods stubs for easier review
* Check how state dependencies will be mapped
* Rename state to store
* Rename state to store
* Rewrite spec tests for Graphite Query Controller
* Update docs
* Update docs
* Update public/app/plugins/datasource/graphite/state/helpers.ts
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
* Update public/app/plugins/datasource/graphite/state/helpers.ts
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
* Update public/app/plugins/datasource/graphite/state/helpers.ts
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
* Update public/app/plugins/datasource/graphite/state/providers.ts
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
* Update public/app/plugins/datasource/graphite/state/providers.ts
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
* Update public/app/plugins/datasource/graphite/state/providers.ts
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
* Update public/app/plugins/datasource/graphite/state/providers.ts
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
* Update public/app/plugins/datasource/graphite/state/providers.ts
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
* Update public/app/plugins/datasource/graphite/state/providers.ts
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
* Add more type definitions
* Load function definitions before parsing the target on initial load
* Change targetChanged to updateQuery to avoid mutating state directly
It's also needed for extra refresh/runQuery execution as handleTargetChanged doesn't handle changing the raw query
* Fix updating query after adding a function
* Simplify updating function params
* Remove redundant awaits
* Use redux Action
* Use more specific type for GraphiteTag
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
* set value default on init
* shared location config
* shared locaiton config
* shared locaiton config
* remove file
* add alpha annotations
* feature: icon picker
* features: regular shapes picker
* fix: set circle as default in select
* use a registry for shapes
* remove (unused) picker
Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
Co-authored-by: An Le <anle@Ans-MBP.localdomain>
* PR for Github Enhancements
* Accidentally commited a file from another branch, fixing
* One other docs file left hanging - removing
* retrigger checks
* using drone.yml from main
* VizTooltip: Use previous positioning calculation
* VizTooltip: Don't need to check for tooltip width/height here
* VizTooltip: Disable pointer-events in the mixin
* VizTooltipContainer: Move pointerEvents to inline style to prevent breaking AnnotationMarker
* Move comment to correct place
* No need to change this
* adding some structure to combine the local and remote into one type.
* feat(catalog): map local and remote responses to catalog plugin
* feat(catalog): render CatalogPlugins in list
* refactor(catalog): update usePluginsByFilter to work with new data structure
* refactor(catalog): move helper functions into helpers file. delete redundent usePlugins hook
* feat(catalog): create CatalogPluginDetails and pass to PluginDetails
* feat(catalog): update types and components for plugin installation
* chore(catalog): comment so not to forget to move code out of api layer
* fix(catalog): make sure all filter shows gcom and installed
* fix(catalog): fix up getCatalogPlugin logic for only locally available plugins
* refactor(catalog): create getCatalogPluginDetails helper. Move usage to hook
* revert(catalog): put back small logos in PluginList
* revert(catalog): put back small logo for PluginDetails page
* fix(catalog): prevent useDebounce from triggering when SearchField mounts
* chore(catalog): add coment explaining reason for usedebouncewithoutfirstrender
* refactor(catalog): replace reduce with filter to remove duplicate array of all plugins
* refactor(catalog): update types for useDebounceWithoutFirstRender
* chore(catalog): remove commented out import
Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>
* Doc: Info about $__rate_interval for naive users
<!--
Thank you for sending a pull request! Here are some tips:
1. If this is your first time, please read our contribution guide at https://github.com/grafana/grafana/blob/main/CONTRIBUTING.md
2. Ensure you include and run the appropriate tests as part of your Pull Request.
3. In a new feature or configuration option, an update to the documentation is necessary. Everything related to the documentation is under the docs folder in the root of the repository.
4. If the Pull Request is a work in progress, make use of GitHub's "Draft PR" feature and mark it as such.
5. If you can not merge your Pull Request due to a merge conflict, Rebase it. This gets it in sync with the main branch.
6. Name your PR as "<FeatureArea>: Describe your change", e.g. Alerting: Prevent race condition. If it's a fix or feature relevant for the changelog describe the user impact in the title. The PR title is used to auto-generate the changelog for issues marked with the "add to changelog" label.
-->
**What this PR does / why we need it**:
For Prometheus newbies (i.e. most of us), it seems like $__rate_interval should be widely used, but the documentation doesn't tell us that. So I added more about why it's good, and an explicit recommendation that it can be a good default value for use if (like most of us) you don't really understand how to choose an interval. (Let me know if that's not actually the case, but that's what I took away from https://github.com/grafana/grafana/issues/21417)
Also fixed a few typos in the existing doc.
**Which issue(s) this PR fixes**:
<!--
- Automatically closes linked issue when the Pull Request is merged.
Usage: "Fixes #<issue number>", or "Fixes (paste link of issue)"
-->
Fixes #
**Special notes for your reviewer**:
* Edits based on suggestions from @beorn7
* Update docs/sources/datasources/prometheus.md
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
Co-authored-by: Ivana Huckova <30407135+ivanahuckova@users.noreply.github.com>
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
Co-authored-by: Ivana <ivana.huckova@gmail.com>
* Do not call onCloseMenu when a value was selected
Otherwise a wrong value might be picked up from the input in case when part of the value is in the input (used for filtering) and the actual value is selected.
* Add more docs
* DashboardSrv: Remove ngInject + promiseToDigest wrapper
* NavModelSrv: Remove ngInject that is doing nothing
* DashboardSrv: Use getBackendSrv instead of just importing the backendSrv directly
* Use backend SDK for influxdb
* Remove BasicAuth condition, some comments
* Remove not used fields from datasource info
* Register InfluxDBService
* Fix casting and make HTTPClientProvider exported
* Remove unused function
* Remove empty line
* Update pkg/tsdb/influxdb/flux/query_models.go
Co-authored-by: Gábor Farkas <gabor.farkas@gmail.com>
* Read interval from TimeRange instead of Interval
* Change pkg name from datasource->models, minor changes
* Use testify instead of convey
* Add new calculator logic and fix pointer semantic for dsInfo
* Initialise parsers, use tsdb interval pkg
Co-authored-by: Gábor Farkas <gabor.farkas@gmail.com>
* Make validate-schema CLI command work vs. disk
Previously, `grafana-cli cue validate-schema` would only validate the
CUE files that had been included at compile time. Now, the command
requires passing a grafana checkout root path, and will actually check
against live files on disk.
* Exempt validateScuemata from sec linter
* Nit: validateScuemata is a simpler, better name
* Try to fix validate-scuemata build step
* Add landmark markup
* Make panel titles h2
* Descibe panel landmarks
* Add nav elements and heading 1
* Reset line height and remove margin
* Make focus styles visible
* Change nav to section
* Add desc
* Fix focus styles cutoff
* Alerting: deactivate an Alertmanager configuration
Implement DELETE /api/alertmanager/grafana/config/api/v1/alerts
by storing the default configuration which stops existing cnfiguration
from being in use.
* Apply suggestions from code review
* Add prettifyLogMessage to select components in test file
* Change entry depending on the value of prettifyLogMessage
* Add prettifyLogMessage to state
* Fix merge conflict
* Fixe bug where the log message wasn't parsed as JSON
* Implement function to restructure all logs
* Change elstic image version back to 7.7.1
* Add showCommonLabels that was missing
* Remove comment
* Put import of getParser together with the other imports
* Logs: fix bug where message isn't restructured if it contains ANSI code
* Logs: change label for switch to Restructure
* Remove unnecessary file
* Logs: added divider before switch component
* Add dividers between the different log options
* Remove unintentional changes
* Explore: remove dividers in log settings
* Explore: refactor for LogRowMessage for better readability
* remove unnecessary change
* Logs: fix bug where logs aren't restructured if they have highlights
* Logs: minor refactoring
* Logs: use memoizeOne to prevent parsing on every re-render
* Logs: calculate needsHilight inside renderLogMessage instead of outside
* Logs: fix bug where logs aren't prettified when wrap logs is disabled
* Explore: change name to prettify
* Remove console.log
Co-authored-by: Ivana Huckova <30407135+ivanahuckova@users.noreply.github.com>
* Dashboards: add switch to prettify log messages to the Logs fields
* Logs: make prettify only work for JSON logs
* Logs: fix bug with tests for logs
* Update public/app/plugins/panel/logs/module.tsx
Co-authored-by: Ivana Huckova <30407135+ivanahuckova@users.noreply.github.com>
Co-authored-by: Ivana Huckova <30407135+ivanahuckova@users.noreply.github.com>
* added documentation for the prepare time series transformation.
* Update docs/sources/developers/plugins/data-frames.md
Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>
* Update docs/sources/panels/transformations/types-options.md
Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>
* Update docs/sources/panels/transformations/types-options.md
Co-authored-by: Marcus Olsson <marcus.olsson@hey.com>
* Update docs/sources/panels/transformations/types-options.md
Co-authored-by: Marcus Olsson <marcus.olsson@hey.com>
* changed according to feedbcak.
Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>
Co-authored-by: Marcus Olsson <marcus.olsson@hey.com>
* Add test for devenv resources
* Refactor validation tests for grokkability
* Devenv dashboards error-tracking script
* Refactor to use cueerrors.Details()
* Further test refinement
* Close major elements of dashboard schema
* Centralize dashboard validation tests
General dashboard validation testing belongs in the load package.
* Better names for error context on glue CUE code
* Fixup validate-resource
Do only one of base or dist, and fix copied docs.
* Skip the devenv test
* Remove test for validateResources
* Fix shellcheck
* Backend linter
Co-authored-by: sam boyer <sdboyer@grafana.com>
* ReleaseNotes: Updated changelog and release notes for 7.5.10
* added link to the release note.s
Co-authored-by: Marcus Andersson <marcus.andersson@grafana.com>
* Migrate Elasticsearch to backend plugin SDK
* Fix linting
* Move away from Convey!
* Rebase commit
* Small logger fix
* Fixes according to reviewer's comments
* Fixes according to reviewer's comments
* Fixes according to reviewer's comments
* More cleanup
* Move things around - small refactoring
* Fix typo
* Update calculator - add tests
* Fixes according to reviewer's comments
* Revert "Revert "Elasticsearch: add frozen indices search support (#27472)" (#27726)"
This reverts commit 4c7131425b.
* Make label width a bit more consistent
* Add documentation for X-Pack & Frozen Indices support in Elasticsearch
* Change UI & docs casing
* create default empty dataframe
* Remove backticks and simplify regex
* small doc improvement
* ReleaseNotes: Updated changelog and release notes for 8.0.6
* Fix changelog entry for #36737
* Fix release note entry for #36737
* Add new release for 8.0.6
Co-authored-by: kay delaney <45561153+kaydelaney@users.noreply.github.com>
If DispatchCtx is called and there's a handler registered using
AddHandler we now allow that and not return a handler not
found error. In addition we log a warning message helping
the developers know that AddHandlerCtx should be used
instead.
If Dispatch is called and there's a handler registered
using AddHandlerCtx we log a warning message helping
the developers know that DispatchCtx should be used instead.
Make sure that default timeout settings are based on configuration
parameters. This now applies for core data sources using old TSDB
contracts and new SDK contracts. Before it was only applied for old TSDB
contracts.
Also moves global setting variables to non-global (setting.Cfg).
* Expand the value of math and reduce expressions in annotations and labels
This commit makes it possible to use the values of reduce and math
expressions in annotations and labels via their RefIDs. It uses the
Stringer interface to ensure that "{{ $values.A }}" still prints the
value in decimal format while also making the labels for each RefID
available with "{{ $values.A.Labels }}" and the float64 value with
"{{ $values.A.Value }}"
* New index pages and some new images
* Update
* Update graph-color-scheme.md
Small grammar fix
* Update pie-chart-panel.md
Small fix for caption
* Update _index.md
Minor grammatical change and missing comma.
* Update graph-color-scheme.md
Another small grammar tweak
* Adding color scheme docs
* Updated image captions
* Added missing panels
* Updates
* fixes
* Align on naming
* Fix
Co-authored-by: Petros Kolyvas <code@petros.io>
* Docs:Adjust azuread.md for Powershell UUID command
Why this change is needed:
-Update the docs to include more Unique ID information for Windows users. This is intended to improve user experience.
-Adjust passive to active voice where it improves the documentation.
-Checking for style guide compliance.
Closes issue: #23094
* Update azuread.md
Fixed typo "possibile".
* Update docs/sources/auth/azuread.md
fix capital letter U and G.
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
* Update docs/sources/auth/azuread.md
Adjust punctuation for clarity.
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
* Update docs/sources/auth/azuread.md
Place Note in correct bold markup following style guide.
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
* Update docs/sources/auth/azuread.md
Bold markup for UI fields.
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
* Update docs/sources/auth/azuread.md
Capital for id > ID.
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
* Including suggestions as noted by Diana Payton
* adjusting object IDs to match the docs.microsoft style
* using bold for UI elements
* Other fixes as needed
Update docs/sources/auth/azuread.md
Capital for id > ID.
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
* Update docs/sources/auth/azuread.md
Add the adverb to place the next step directly after the previous step in sequence.
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
* Update docs/sources/auth/azuread.md
Change remaining lowercase "id" use to upper case "ID" when it
appears in text.
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
* Applying achatterjee's suggestions
Accepting the changes:
* Adding in articles
* Adjusting prepositions
* Other changes as requests
Completing this commit through the Github web interface for added speed.
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
* Update queries.md
Completing some examples to allow newbie people to understand relative time and time shift time
* Update docs/sources/panels/queries.md
Co-authored-by: Geshi <ohayo@geshii.moe>
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
Co-authored-by: Geshi <ohayo@geshii.moe>
* Update configuration.md
Corrected several typos and included words that were originally left out to ensure proper grammar in document.
* Update docs/sources/administration/configuration.md
Co-authored-by: Dave Henderson <dhenderson@gmail.com>
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
Co-authored-by: Dave Henderson <dhenderson@gmail.com>
* ValueMappings: Force overflowing modal content to scroll
* ValueMappings: Update unit tests
* Select: Portal Select to document.body, close menu on scroll
* Select: Fix tests + apply updates from https://github.com/grafana/grafana/pull/32833
* ValueMappingsEditorModal: Revert to using selectEvent in the tests
* Select: Fix remaining unit tests
* Portal: Rewrite Portal as a functional component so we can use useTheme2
* Modal: Remove modal styles from this PR
* Update E2E tests
* More unit test fixes
* Select: Fix remaining E2E tests
* Select: Create util method to select an option in tests
* Sign Drone's configuration YAML file
This is needed to protect the repository
* Update grabpl to 2.2.8
* Add comment about generating the drone.yml file
* Docs: Docs for new transformations rows to fields and config from query results
* Added config from query docs
* refinement
* Same lists everywhere
* minor tweak
* Added beta and version notices
Name of time field changed in v8 for time series queries from Time to the name of the selected
time column, i.e. time or time_sec. These changes should make sure that the name of time field
is always returned as Time for time series queries.
Fixes#36059
Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
* adding transformer that will stretch a data frame from wide to long.
* added a UI for the stretch frames transformer.
* refactored according to feedback.
* removed unused dep.
* making sure it is being displayed.
* minor adjustments.
* move stretch to prepare
* improved readability of tests.
* refactored to use a function component syntax.
Co-authored-by: Marcus Andersson <marcus.andersson@grafana.com>
* Explore: quick fix for page title
* Explore: update page title in componentDidUpdate with info about the current datasources
* Explore: change tests to incorporate the new page title
* Explore: remove updatePageDocumentTitle since the recent changes replace it
* initial steps for config from data
* Moving to core and separate transforms
* Progress
* Rows to fields are starting to work
* Config from query transform working
* UI progress
* More scenarios working
* Update public/app/core/components/TransformersUI/rowsToFields/rowsToFields.ts
Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
* transform all
* Refactor
* UI starting to work
* Add matcher UI to transform
* Apply to self
* Adding a reducer option
* Value mapping via new all values reducer
* value mappings workg add -A
* Minor changes
* Improving UI and adding test dashboards
* RowsToFieldsTransformerEditor tests
* Added tests for FieldToConfigMapping Editor
* Added test for ConfigFromQueryTransformerEditor
* Minor UI tweaks
* Added missing test
* Added label extraction
* unified mapping
* Progress refactoring
* Updates
* UI tweaks
* Rename
* Updates
Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
This would result in a `Dashboard init failed` error when migrating
dashboards with a folded panel that has a `fieldConfig` but has not
defined `fieldConfig.defaults`.
* TimeSeries: Improve tooltip positioning when tooltip overflows
* VizTooltip: Use react-popper, extract positioning calculation into util function + add unit tests
* VizTooltip: Keep ref as tooltipRef
* Use popper only for VizTooltip positioning
* VizTooltip: Set altAxis to true to prevent overflow on y axis
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
* Adding plugin state feature to transforms
* initial help box
* New HelpBox component
* More progress
* Testing
* Removing HelpBox, simple new design, new active state for OperationRowAction
* Updated tests
* Fixed typing issue
* Removed AlphaNotice
* Made focus and enter key trigger OnClick and sorted transformations
* Fixed e2e tests
* Tracing: add way to configure trace to logs start and end time
* Use the span's time by default
* Update docs
* Update time inputs to use strings instead of number
* Support negative values as well
* Add info about using negative value
* Don't round up Loki range
* Update docs/sources/datasources/jaeger.md
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
* Wording for doc
* Round adjusted start and end time
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
* displaying enterprise plugins in the list.
* added place holder for tests and removed unused code.
* added test for the browse page.
* added empty test file.
* added some more tests.
* TablePanel: Adds minimum column width field
The table panel uses virtual rendering of rows, which prevents resizing
based on the contents of a column. A minimum column width field
simulates this ability.
* Fixed indentation issue
* Updates the table panel documentation
Added the "Minimum column width" option to table panel docs and updated
the information for the "Column width" option in the docs.
* styling
* useCallback for onAction
* add flex to accomodate seconds
* fix positioning of the calender
* move input to its own component with state
* wrap callbacks in usecallback
* fix states and add mdx
* add docs
* add tests
* styling fixes for smaller screens
* make date optional
* add test for the changing the input
* more position fixes
* fix an issue with removing the date
* do not show invalid date in input
* more pr feedback
* Replace analytics service with Echo backend
* Add Rudderstack integration and general pageview and interaction Echo events
* Update conf/defaults.ini
Co-authored-by: Dan Cech <dcech@grafana.com>
* Update packages/grafana-runtime/src/types/analytics.ts
Co-authored-by: Dan Cech <dcech@grafana.com>
* Update conf/defaults.ini
Co-authored-by: Dan Cech <dcech@grafana.com>
* Update tests
* Force cla check
Co-authored-by: Dan Cech <dcech@grafana.com>
* Document which data sources work with caching
* add Prometheus and Loki to exclusions
* update list of built-in data sources
I checked in Grafana v8.0.4 and these were the built-in data sources that do work with query caching.
* Apply suggestions from code review
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
* alphabetize list
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
* moved the plugins admin to core and used the plugins toggle to decide which version to use.
* reverted change.
* changed so the library tab is the default one.
* fixing navigation.
#
* fixed so we have the proper header.
* including the core plugins
* fixed so we display logos for local plugins.
* fixed so we have a working version of plugin catalog.
* removed console logs.
* reverted changes.
* fixing failed test.
* Improve error handling for error messages
The error message will be read from error object from the following properties in the following order:
- message
- data.message
- statusText
* Convert api/ds/query errors to TestingStatus
SQL datasources (mysql, mssql, postgres) and CloudWatch use api/ds/query to test the data source, but previously didn't handle errors returned by this endpoint. If the error cannot be handled it's re-thrown to be handled in public/app/features/datasources/state/actions.ts
* Use async/await instead of Promises
* Remove incorrect type import
TestingStatus is in app/types. Should be pulled down to grafana/data but it depends on HealthCheckResultDetails that is public and lives in grafana/runtime. Ideally TestingStatus should live in grafana/data but I'm not sure if HealthCheckResultDetails can be move there too (?)
* Update packages/grafana-data/src/types/datasource.ts
Co-authored-by: Erik Sundell <erik.sundell@grafana.com>
* Handle errors with no details in toTestingStatus instead of re-throwing
* Update packages/grafana-data/src/types/datasource.ts
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
Co-authored-by: Erik Sundell <erik.sundell@grafana.com>
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
* add macaron code to the code base
* remove unused secure cookies support from macaron
* clean up modules
* remove com dependency
* fix silly typos
* little cleanup, remove recovery middleware
* remove logger middleware
* remove static handler and remove unused context methods
* bring inject into macaron codebase
* remove unused applicator
* add back macaron license
* more cleanups in macaron code
* remove unused injector Set method
* remove unused context methods: param to int conversion, body helper type, cookie helpers
* remove action from context
* remove complex environment handling, we only use Env variable
* restore ReplaceAllParams to fix the tests
* Docs: added an accessibility section in the pull request guide
* added more points to the accessibility guideline
* fixes some grammar nits
* changed aria to capital case since its an acronym
* added a reference to the Grafana theme
* improved the wordings for better context
* Use Dataframes and extract tags from response
* Fix timestamp conversion
* Add tests for data frame conversion
* Add missing RefID and simplify returning an error
* draft dataframe/sdk convertion for graphite
* intermedia
* modify init because registration failed
* Allocate memory for each data point value
* Remove redundant memory aliasing
* Remove redundant new line
* Sort imports
* Simplify returning nil values
* fix lint
* remove unused jsondata
* add checks on query length
* remove basic auth from request
Co-authored-by: Piotr Jamróz <pm.jamroz@gmail.com>
* First stab on UI for adding annotations in time series panel
* Extend panel context with annotations api
* Annotations editor UI & CRUD
* Prevent annotation markers to overflow uPlot canvas
* Do not overflow graphing area with region annotations
* Align annotation id type
* Fix exemplar markers positioning
* Use clipping region rather than adjusting annotation region bounds
* Smaller icons
* Improve annotation tooltip and editor auto positioning, reorg code
* Renames
* Enable annotations ctx menu only when adding annotations is allowed
* Wrap setSelect hooks diring init hook
* Use TagFilter instead of TagsInput
* Add id to annotation events
* Add support for cmd+click for adding point annotations
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
* Add alertmanager notifications tab
* Link to silences page from am alert
* Include summary for alertmanager group
* Fix colors for am state
* Add horizontal dividing line
* PR feedback
* Add basic unit test for alert notificaitons
* Rename Notificaitons component file
* Polling interval to groups
* Add alertmanager notifications tab
* Link to silences page from am alert
* Include summary for alertmanager group
* PR feedback
* Add basic unit test for alert notificaitons
* Rename Notificaitons component file
* Alerting: make alertmanager notifications view responsive (#36067)
* refac DynamicTableWithGuidelines
* more responsiveness fixes
* Add more to tests
* Add loading and alert state for notifications
Co-authored-by: Domas <domas.lapinskas@grafana.com>
* DashboardPage: Refactoring state handling to improve performance and fix bugs with state out of sync
* Fixed exit panel editor timing issues
* New tests in RTL
* Updated comment
* Removed unused imports
* Alerting: Refactor state manager as a dependency
Within the scheduler, the state manager was being passed around a
certain number of functions. I've introduced it as a dependency to keep
the "service" interfaces as clean and homogeneous as possible.
This is relevant, because I'm going to introduce live reload of these
components as part of my next PR and it is better if dependencies are
self-contained.
* remove unused functions
* Fix a few more tests
* Make sure the `stateManager` is declared before the schedule
* TimeSeries: Adds support for color scheme series and line colors
* Updates
* fixed device issue
* Evaluate series color in legend
* two fixes
* It works with points
* Added test dashboard
* Minor fix
* Reset color mode to palette when switching to panel that supports by series mode
* Add support for relative thresholds
* Updated snapshots
* Introduce dataproxy_max_idle_connections config var
* Fix according to reviewer's comments
* Fix according to reviewer's comments - round 2
* Remove unused const
* Bring back MaxIdleConnsPerHost
* Fixes according to reviewer's comments
* chore(babel): bump packages to 7.14.x
* chore(babel): remove plugin-proposal-class-properties and plugin-proposal-private-methods
these plugins are now enabled by default in preset-env
* Transformation: show message if not applied on single frame
* Use FieldValidationMessage component instead
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
* Annotations: create React component, naive attempt at hooking together
* Annotations: Use query object instead of passing annotation
* Annotations: Hook up the new api to get annotation tags
* Annotations: Use InlineFieldRow instead of gf-form-inline
* Annotations: Use InlineSwitch instead of gf-form-switch
* TagFilter: Add support for allowCustomValue
* Annotations: Update to match backend api
* Annotations: Add basic tests, expose inputId on `TagFilter`
* Annotations: Fix test name and reorder tests slightly
* Annotations: Use FieldSet instead of gf-form-group
* Refactor: fixes annotation queries
* Annotations: Everything working, just types to fix...
* Annotations: Fix types?
* Revert "Annotations: Fix types?"
This reverts commit 6df0cae0c9.
* Annotations: Fix types again?
* Annotations: Remove old angular code
* Annotations: Fix unit tests for AnnotationQueryEditor
* Annotations: Check if it's an annotation query immediately
* Annotations: Prevent TagFilter overflowing container when there are a large number of tags
* Change to new form styles
* Annotations: Add id's + fix unit tests
* Updated wording
* Annotations: Allow custom value to preserve being able to use template variables
Co-authored-by: Hugo Häggmark <hugo.haggmark@gmail.com>
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
* Tooltip Plugin: Prevent tooltip render if focusedSeriesIdx is out of range
* TooltipPlugin: Also prevent render in multi case
* TooltipPlugin: Return null if field is undefined
* Dashboard: invert invalid date ranges from URL
* Dashboard: discard invalid date ranges from inputs
* Dashboard: move time range reset
* Dashboard: simplify undefined dashboard verification
* Dashboard: show form error on invalid date range
* Dashboard: rename function to isRangeInvalid
* Dashboard: refactor invalid check functions
* Dashboard: different error messages for date picker
* Dashboard: add date tests to TimeRangeForm
* Grafana-ui: disables storybook controls that are irrelevant
* excluded unused control in Select story
* made timeRange control visisble in GraphNG story
* add fixed role for datasource read operations
* Add action for datasource explore
* add authorize middleware to explore index route
* add fgac support for explore navlink
* update hasAccessToExplore to check if accesscontrol is enable and evalute action if it is
* add getExploreRoles to evalute roles based onaccesscontrol, viewersCanEdit and default
* create function to evaluate permissions or using fallback if accesscontrol is disabled
* change hasAccess to prop and derive the value in mapStateToProps
* add test case to ensure buttons is not rendered when user does not have access
* Only hide return with changes button
* remove internal links if user does not have access to explorer
Co-authored-by: Ivana Huckova <30407135+ivanahuckova@users.noreply.github.com>
* added tests for changePassword and forgotPassword component
* added tests for ChangePassword screen in user profile section
* addressed review changes
* changed panels to TimeSeries
* Change panels to time series in Prometheus Stats dashboards
* Change Grafana metrics panels to time series
* Change name of datasource
* Add common labels to Logs panel
* Clean up and add tests
* Update documentation
* Update public/app/plugins/panel/logs/LogsPanel.tsx
Co-authored-by: Gábor Farkas <gabor.farkas@gmail.com>
* Fix type error
Co-authored-by: Gábor Farkas <gabor.farkas@gmail.com>
* add page and basic things
* quick annotations
* added so we can run queries on the view rule page.
* wip.
* merge
* cleaned up the combined rule hook.
* readd queries
* fixing so you can run queries.
* renamed variable.
* fix rerenders and visualizing
* minor fixes.
* work in progress.
* wip
* a working version that can be tested.
* changing check if we have data.
* removed unused styling.
* removed unused dep.
* removed another dep.
* Update public/app/features/alerting/unified/hooks/useCombinedRule.ts
Co-authored-by: Domas <domas.lapinskas@grafana.com>
* Update public/app/features/alerting/unified/hooks/useCombinedRule.ts
Co-authored-by: Domas <domas.lapinskas@grafana.com>
* refactored and changed UI according to figma.
* resseting menu item.
* removing unused external link.
* refactor according to feedback.
* changed so we always fetch the rule.
* fixing so datasource only is displayed once. Also changed so we only navigate to alert list when rule has been deleted.
* removed unused dep.
* Will display query as json if we can't find data source.
* changed to a function instead of the React.FC.
* refactoring of id generation and added support to generate ids for native prometheus alerts without ruler.
* set max width on page content
* added page where you can easily link to a rule in grafana.
* listing rules with same name.
* fixing error cases.
* updates after pr feedback
* more pr feedback
* use 1h-now as timerange
* remove unused import
* start on test
* add test for cloud case
* add ruleview render test
* add render tests for grafana and cloud alerts
* add mock for backendsrv
* add rendering test for the find route
* check if cards are rendered
Co-authored-by: Peter Holmberg <peter.hlmbrg@gmail.com>
Co-authored-by: Domas <domas.lapinskas@grafana.com>
* Add IsFolder field into models.GetDashboardQuery
* Reverted folderId - return dummy success when calling get folder with id 0
* Moved condition to upper level - add test
* added tests for SignupPage component
* added tests for VerifyEmailPage component
* addressed review changes
* removed id for button and followed consistent id naming pattern
* Refactor OpenTSDB using backend SDK
* Adjust tests to the SDK refactor
* Remove openTSDB from service
* Rename OpenTASDB service to Service, use AuthPassword from DecryptedSecureJson
* Devenv: Add opentsdb v2.3 data source and dashboard
* Letting http client provider to set basic auth,
renaming,
casting datasource direclty to pointer
* Update pkg/tsdb/opentsdb/opentsdb.go
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
* Update pkg/tsdb/opentsdb/opentsdb.go
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
* Format struct
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
* Elasticsearch: make interval select handle case-sensitive input
* Elasticsearch: Allow case sensitive custom options in date_histogram interval
* asd is not a good input id
* ci(frontend-metrics): depend on build-frontend step to pass before publishing metrics
* ci(frontend-metrics): move frontend-metrics step so build-frontend occurs first
* ci(frontend-metrics): introduce outdated and vulnerable dependency commands
* ci(frontend-metrics): get total built bundle size in kb
* ci(frontend-metrics): print total bundle folder size
* chore: fix spelling
* ci(frontend-metrics): easily count the total for vulnerabilities
Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>
* chore(frontend-metrics): fix for shellcheck to pass
* fix(frontend-metrics): capture each line of vulnerability audit output
* ci(frontend-metrics): fix commas in metrics output
* ci(frontend-metrics): call node modules directly as yarn returns exit code 2 in linux
Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>
* Elasticsearch: add first version of rate aggregation
* Add test for rate aggreation settings editor
* Fix unit
* Add default value for mode for rate agg
* Add todo
* Revert "Add default value for mode for rate agg"
This reverts commit a44c985d8b.
* Fix width when select is empty
* Add rate aggregation to elasticsearch models
* Remove rate aggregation from extended stats
* Move elastic2 docker block & add elastic (latest)
* Add versionRange to rate aggregation
* add 7.10 elasticsearch version option
* Set supportsInlineScript to true for rate aggregation
* Remove fixed width from select
* Change seconds label for rate aggregation unit options dropdown
Co-authored-by: Piotr Jamróz <pm.jamroz@gmail.com>
Co-authored-by: Elfo404 <me@giordanoricci.com>
Co-authored-by: Piotr Jamróz <pm.jamroz@gmail.com>
* Alerting: Allow __value__ label in notifications
was being removed by removePrivateItems
discoverd in #36020, but issue is not about that specifically
* __value__ label to __value_string__ annotation
and .ValueString extended property for notifications
* Remove some props since they are already inferred from mapStateToProps
* Remove empty interface
* Refactor TableContainer component
* Did some small re-namings
* Dashboard: Allow more than 26 queries per panel.
Fixes#4978
* Chore: Remove underscores from helper function names
Co-authored-by: Danyal Fairburn <danyal.fairburn@bt.com>
* Add option to skip tests and linting for plugin:build
Our plugin has a separate step of CI that tests and lints, so we'd like
to be able to control whether the build step will run it too.
defaults to continuing with lint and tests.
update README for grafana-toolkit
* remove accidental duplicate documentation of coverage
* add back only re-render dashboard first time on layout change
* remove panel refs
* Updates
* Improved is in view logic
* Updates
* Remove unnessary auto sizer
* Found another approach that works with resize as well
* Updates
* fixing test
* Fixing ref issues
* Fixed mobile size handling, and view panel handling, removed now unnessary logic
* Updated snapshot
* Explore: props automatically inferred from mapStateToProps
* Remove props that that wasn't removed in last commit
* Remove unused imports
* Add correct properties to test function
* Remove final props from ExploreProps
* Explore: refactor ExploreQueryInspector.tsx to inferr props via mapStateToProps
* Explore: refactor ExploreToolbar.tsx to infere props from mapStateToProps
* Rebase (broken tests)
* Removed tables - refactored processAggregationDocs func
* Tests cleanup
* Nit - add space in percentile legend titles
* Fix labels naming - use metricAggType map
* Fix bug which appended same fields over and over again
* Replace test with dataframes
* Fix tests
* Add nolint:gocyclo - will need refactoring
* Move frames tags assignment
* Add failing test fo when ES server is booting up
* Revert "Add failing test fo when ES server is booting up"
This reverts commit fd14a1fd5e.
Co-authored-by: Elfo404 <me@giordanoricci.com>
* rename strategy
* Update pkg/tsdb/sqleng/sql_engine.go
Co-authored-by: Torkel Ödegaard <torkel@grafana.org>
* more strict constraints
* Fixed so that it works on multi series results
* only apply the logic when original query returns 3 fields
* removed part of comment
* Update mysql test
Co-authored-by: Torkel Ödegaard <torkel@grafana.org>
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
* feat(dashboard): introduce selector with fallback for unknown plugin
* refactor(dashboard): replace redux connect with redux hooks
* fix(dashboard): add a fallback for vizpicker when a panel plugin cannot be found
* feat(dashboard): add an icon for fallback plugins for vizpicker
* refactor(dashboard): prefer HOF selector
* fixes storybook crash
* CodeEditor: refactors story from knobs to controls
* refactor codeEditor to work when showLineNumbers is set to false
* fixes non functional controls in story
* fixes arg 'value' formatting
* revert monaco options config
* withStoryContainer: removes addon-knobs since we've migrated to controls
* refactored withStoryContainer utility so that users can be able to resize story
* Layout: added ability to resize story (#35824)
* Layout: added ability to resize story
* removes the knobs-disable config since its already been applied globally
* FieldArray: refactors story to use controls and ability to resize story (#35820)
* FieldArray: refactors story to use controls and ability to resize story
* added much better argTypes changed story name to capital case
* updates the FieldArray.mdx with the new usage examples
* fixes incorrect naming of the args
* migrate previous fieldConfig when changing panel type
* TimeSeries: ensure a color series override is migrated correctly
* TimeSeries: update test description to be more accurate
* TimeSeries: update snapshot
* Protect against missing overrides section
We are using grafonnet-lib to generate dashboards. These dashboards do
not contain any `override` keys in `fieldConfig` by default and that is
causing this DashboardMigrator script to blow up when trying to import
the dashboards, see [1]. In Grafana v7, an empty overrides is
automatically added but using grafonnet-lib, it isn't possible to set an
empty overrides attribute e.g. [2] requires matcher/properties to be
set. Setting to null ends up giving me [3], which causes the panel to
not be displayed.
[1]
```
initDashboard.ts:137 TypeError: t.overrides is not iterable
at v.w (DashboardMigrator.ts:960)
at v.updateSchema (DashboardMigrator.ts:672)
at D.updateSchema (DashboardModel.ts:993)
at new D (DashboardModel.ts:156)
at initDashboard.ts:134
```
[2]
https://github.com/grafana/grafonnet-lib/blob/master/grafonnet/stat_panel.libsonnet#L150-L164
[3]
```
"fieldConfig": {
"defaults": {
"links": [ ],
"mappings": [ ],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "red",
"value": 0
},
{
"color": "orange",
"value": 1
},
{
"color": "green",
"value": 3
}
]
},
"unit": "none"
},
"overrides": [
{ }
]
},
```
* Update public/app/features/dashboard/state/DashboardMigrator.ts
Co-authored-by: Marcus Andersson <systemvetaren@gmail.com>
* ReleaseNotes: Updated changelog and release notes for 7.5.8
* Add missing 7.5.8 link
* Update 7.5.8 release date
Co-authored-by: Piotr Jamróz <pm.jamroz@gmail.com>
* Chore: Upgrades Cypress to 7.5.0
* updating e2e test not to use momen.
* Fix trace viewer tests
* Chore: changing to exact version and removing console.logs
* Tests: refactor to handle day diffs
Co-authored-by: Marcus Andersson <marcus.andersson@grafana.com>
Co-authored-by: Zoltán Bedi <zoltan.bedi@gmail.com>
* Update the mobile view. Change login wrapper justify-content to flex-start. Make the logo and title smaller. Prevent alert-list from overflowing the screen. Increase the footer items line-height.
* Use already existed media-query and set mobile styles as default
* Update changes based on V8 changes
* Revert footer bottom spacer.
* Fix deleting labels and annotations
* Add test
* Keep no data and error start if not provided
* Allow setting interval and for to zero during rule updates
* Alerting: Implement /status for the notification system
Implements the necessary plumbing to have a /status endpoint on the
notification system.
* Add API examples
* Update API specs
* Update prometheus/common dependency
Co-authored-by: Sofia Papagiannaki <sofia@grafana.com>
* Trigger DashboardPanelsChangedEvent from InspectJSONTab if the panel.gridPos changed and if the dashboard needs to re-render, if yes we will that will update the positioning
* Minor cleanup
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
* add accesscontrol action for stats read
* use accesscontrol middleware for stats route
* add fixed role with permissions to read sever stats
* add accesscontrol action for settings read
* use accesscontrol middleware for settings route
* add fixed role with permissions to read settings
* add accesscontrol tests for AdminGetSettings and AdminGetStats
* add ability to scope settings
* add tests for AdminGetSettings
* Add Panel: fixes No gap between rows in safari
* removes extra margin from bottom and far right
* fixes frontend test
* make add panel actions accessible and rewrite test using RTL
* Migrate singlestat value mappings to new value mappings
* Update public/app/features/dashboard/state/DashboardMigrator.ts
* Update migration to produce single value map
* Changed font-family to monospace
Added an inline style attribute to the input field for the graphite query editor which changes the font-family to monospace
* Change graphite query editor font-family to monospace
Added an inline style attribute to the input field for the graphite query editor which changes the font-family to monospace
* handle the case where refresh_intervals === null + add unit test
* have a clean _dashboard for each test
* modify check to see if refresh_intervals is an array
* Add new accesscontrol action for ldap config reload
* Update ldapAdminEditRole with new ldap config reload permission
* wrap /ldap/reload with accesscontrol authorize middleware
* document new action and update fixed:ldap:admin:edit with said action
* add fake accesscontrol implementation for tests
* Add accesscontrol tests for ldap handlers
Co-authored-by: Ursula Kallio <73951760+osg-grafana@users.noreply.github.com>
Fixes panic/fatal error concurrent map writes in SQL data sources when multiple
queries are executed concurrently and you interpolate SQL query before executing it.
Fixes#35469
* only recurse a symbolic link if it is a directory
* added test for detecting valid plugins using lib dirs with symbolic links in them (like oracle)
* fix linting errors
* added extra checks as per code-review
* draft pr convert opentsdb response to dataframes
* Add test for parse response and fix go lint
* Add test case for create request
* Use go-cmp in test
* Remove comment
Co-authored-by: Ida Furjesova <ida.furjesova@grafana.com>
* fix(routing): remove baseUrl only if at start of url
* test(routing): add subdirectory suburl tests for stripBaseFromUrl
* test(routing): add absolute url check to fix tests, add extra tests
#31871 introduced support for configuring timeout in seconds
for HTTP data sources. That had a bug where backend expected
a numeric timeout value where it was actually stored as a
string. This should resolve this by requiring input to be
numbers, storing input as numeric and falling back to string
value if there's no numeric value.
Ref #31871
* fix sql annotation parsing for empty responses
* fix backend when no data returned
* add back frontend changes
Co-authored-by: Ying WANG <ying.wang@grafana.com>
Fixes a problem with query variables where SQL query returning for example only
numeric values didn't populate the query variables with values.
Fixes#35391
* Grafana-UI: Removes knobs from storybook addons pane
* removed other knobs settings since we are disabling it
* remove the knobs disable config in individual stories
* Added "Create a library panel".
* Fixed broken relrefs
* More changes.
* Added more content.
* Update docs/sources/panels/panel-library.md
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
* Updated title
* Added link to topic from What's New
* Few minor edits.
* Updated intro based on Petros's feedback.
* Slight modification to create lib panel based on feedback.
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
* Fix dashboard alert and nootifier migration for MySQL
* Fix POSTing Alertmanager configuration if no current configuration exists
in case the default configuration has not be stored yet
or has failed to get stored
* Change CreatedAt field type
* fix(card): defend against invalid elements types passed to BaseActions
* test(card): add test to support conditional buttons being passed in
* fix(playlistpage): remove disabled prop from LinkButton for editors
* chore(playlistpage): remove title from edit button
* Alerting: Expand `{{$labels.xyz}}` template in labels and annotations
Signed-off-by: Ganesh Vernekar <ganeshvern@gmail.com>
* Fix annotation not updating for same alert
Signed-off-by: Ganesh Vernekar <ganeshvern@gmail.com>
* Annotations: Fix for update/save/delete annotation not appearing/disappearing
* Annotations: Fix so adds, updates and deletes are shown correctly
* Chore: updates after PR comments
* Alerting: Do not hard fail on templating errors in channels
Signed-off-by: Ganesh Vernekar <ganeshvern@gmail.com>
* Fix review
Signed-off-by: Ganesh Vernekar <ganeshvern@gmail.com>
* add verbose version flag to list dependencies as well as the version
* Fix typo in the println message
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
Move QueryData method into backend plugin manager which HandleRequest uses to
query data from plugin SDK supported data sources. This allowed us to remove a lot
of code no longer needed.
Ref #21510
Co-authored-by: Will Browne <wbrowne@users.noreply.github.com>
* Timeline/Status grid tooltip support first pass
* Tooltips workin
* Use getValueFormat to get the duration
* Separate boxes highlight from tooltip interpolation
* Separate state timeline tooltip component, rely on field display color to retrieve color of series
* create an onHover/onLeave API and optimize implementation
Co-authored-by: Leon Sorokin <leeoniya@gmail.com>
* Tempo: search fixes
Add custom width to time and trace id
Run and show query in search after page refresh
* Iterate through all response data
* Don't store linkedQuery as a property
* AzureMonitor: Use display names for resource types and locations
* de-pluralize resource types
* Rename Namespace field to Resource Type, and use display names
* add comments
* UnsavedChanges: Move Change tracker to use Prompt
* Fix a lot of race conditions and stacking of changes in onConfirm and onDismiss
* Listen to save event
* add missing delay argument
* migrated the change tracker unit tests
* Updated snapshot
* Removed unessary action
* removed updateSourcePanel
* Fix hiding save library panel modal prompt when clicking discard
* change saved libray panel title and buttons so they are a bit different as Prompt and when used from save button
* Fixed issue with saving new dashboard
* Now all scenarios work
* increase wait time
* Fixed one more race condition
* VizLegendTable: fixes column spacing to span to the right side
* reverted text alignment to right
* implemented a more readable solution for tabble legend spacing
* ReleaseNotes: Updated changelog and release notes for 8.0.0-beta3
* Docs: adds Beta3 to index
Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>
* Dashboard: Fix Table view when editing causes the panel data to not update
- Add event subscription on PanelEditorTableView
- Extract runAllPanelQueries into Panel Model in order to use it on PanelChrome and PanelEditorTableView
- Add simple unit test for runAllQueryPaneQueries
* Table: datalink to have text underline and support for image datalink
* fixes image oversize issue when using both image and link in a column
* fixes small nit
* extracted the getLink logic to be a standalone utility function
* Updates table tests to suit current structure
* fixes small syntax nit
* fixes bad typing issue
* annotes the getCellLinks logic as an internal utility function
* removes blank whitespace
* Tests: updates test cases to use getByRole
Co-authored-by: Hugo Häggmark <hugo.haggmark@gmail.com>
* Switch to GraphNG for Logs Histogram
* Remove redundant timeZone
It was used just to format timestamp in the tooltip but it's not needed anymore.
* Add tests for creating logs histogram data
* Update decoractors tests
* Adjust bar width to be more like in the old graph
* Fix tooltip pointer color
* Test tooltip pointer color
* Decouple graph config from uPlot internals
* Ensure nested properties are not mutated when overrides are applied
* Add legend toggling for Explore graphs
* Remove unused component
ExploreGraphNGPanel is now used in Explore
* Code formatting
* allow multiple bars pathBuilders to be globally cached with different settings
Co-authored-by: Leon Sorokin <leeoniya@gmail.com>
* Add scan docker image step, when pipeline fails notify in slack channel
* Add star code that generates the yaml file for the fail message to slack
* Fix template message
* Make message more detailed
* Adjust the name of the step
* Add information that Loki as Prometheus data source is not supported
* Fix ugly error when loki as prometheus used
* Refactor, add test
* Fix type error
* Fix test by passing missing method
* Update public/app/plugins/datasource/prometheus/query_hints.ts
* Remove optionality in prop
When using mulit-dimensional Grafana managed alerts (e.g. SSE math) extract refIds values and labels so they can be shown in the notification and dashboards.
* Security: Update default content_security_policy_template
- Add 'strict-dynamic' back to script-src
- Add ws(s)://$ROOT_PATH to connect-src
- Change onEvent to on-event in angular templates to fix CSP issues in firefox.
- Add blob: to style-src
* Prometheus: Add metadata to metrics in Metrics browser
- use the available metadata to enhance the tooltip on metric items in the metrics browser
- added meta info for histogram metrics (was missing before)
- also added one for ALERTS
* fix test
* Docs: Settings updates on runtime docs skeleton
* Docs: Settings HTTP API
* Docs: Minor changes on settings updates at runtime docs
* Docs: Settings updates at runtime description
* Docs: Minor fix
* Docs: Move PUT /api/admin/settings docs into Admin API page
* Docs: Added longer explanation into 'Settings updates at runtime' page
* Apply suggestions from code review
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
Co-authored-by: Leonard Gram <leo@xlson.com>
* Docs: Include order of precedence description at settings updates page
* Update docs/sources/http_api/admin.md
* Docs: Add link to main configuration page from Settings updates at runtime
* Apply suggestions from code review
Co-authored-by: Mitch Seaman <mjseaman@users.noreply.github.com>
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
Co-authored-by: Leonard Gram <leo@xlson.com>
Co-authored-by: Mitch Seaman <mjseaman@users.noreply.github.com>
* Do not require default subscription for Azure Monitor
* Fix explore URLs when default subscription not set
* Test datasource fixes
* Added comment
* Fix first or default subscription/workspace
* SubscriptionField doesn't depend on Log Analytics
* Tests fixed
* Select default subscription only when user clicked
Threema Gateway supports two types of IDs: Basic IDs (where the
encryption is managed by the API server) and End-to-End IDs (where the
keys are managed by the user).
This plugin currently does not support End-to-End IDs (since it's much
more complex to implement, because the encryption needs to happen
locally). Add a few clarifications to the UI.
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* AzureMonitor: Hide Application Insights and Insights Analytics for panels not using them
* AzureMonitor: Hide Application Insights config
* simplify
* fix test
this should help Live to be enabled by default but still
do not affect setups with lots of simultenious users. To
properly handle many WS connections Grafana administrators
should tune infrastructure a bit - for example increase a
number of open files for a process. Will be in more details
in documentation.
* Visualization: Hide from option should be available as a manual override option
* Fix misaligned type
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
* fix(dashboardpage): add padding so add panel chrome isnt cut off
* fix(addpanelwidget): introduce wrapping element to cater for pulsate animation offset
* refactor(addpanelwidget): use spacing.xs rather than spacing.sm
* test(addpanelwidget): update snapshot
* click out to gcom when config enabled
* set to false
* fix styling for uninstall
* remove advertising config + simplify callout URL
* add entry to configuration.md
* update config name
* update lingo
* Usage Stats: Rename service to use a more idiomatic name
* Usage Stats: Update MetricsFunc definition and implementations
* Revert "Usage Stats: Rename service to use a more idiomatic name"
This reverts commit 910ecce3e8.
* Usage Stats: Update MetricsFunc definition and implementations
* expose folder UID in dashboards API response, import dashboards into folders by folder UID
* handle bad folder UID as 400 error
* 12591:Add tests for request with folderUid
* Use more descriptive error status for missing folders
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
* return 400 when folder id is missing
* put error checking in the right place this time
* mention folderUid in the docs
* Clarify usage of folderUid and folderId when both present
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
* Capitalise UID
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
* mention folder UID in the metadata for a GET response
Co-authored-by: Ida Furjesova <ida.furjesova@grafana.com>
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
removes "rpc error: code = InvalidArgument desc =" like strings from error messages.
This came from old grpc stuff left from when SSE was a plugin (that probably should
not have been used even when it was a plugin)
* Show node graph collapsed by default with trace view
* Fix rename variable
* Change the message
* Add test
* Fix e2e test
* Remove expect in exemplars test
* Align icon
* review fixes
* 33369: Add pipeline step with trivy scan for latest on grafana/grafana to drone config
* 33369:Add docker image scan steps to .drone.star file
* 33369: Add low/medium/unknwon scan into one pipeline step
* 33369:Make starlark generate code only for the given edition
* 33369:Adjust naming and add loop into vulnerability step
* Update scripts/job.star
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
The /api/ds/query and /api/tsdb/query endpoints extract the intervalMs field from
each query in the request, but it currently seems to be ignored, at
least for queries to a Prometheus datasource. This changes
GetIntervalFrom function to check for the presence of intervalMs in the
query model if interval is missing.
* fix(pagetoolbar): pad elements top and bottom to keep vertical align and wrapper padding
* fix(sidemenu): prevent mobile sidemenu squashing dashboard, vertically align mobile sidemenu icon
* fix(dashboardsettings): prevent subheader overlap
* fix(pagetoolbar): center align all toolbar elements vertically
* refactor(pagetoolbar): combine vertical paddings to bring back original padding values
* refactor: update padding values for components that use PageToolbar
* fix(playlists): update Empty cta link route to prevent 404
* test(dashboard): update snapshot
* starting to add eval logic.
* wip
* first version of test rule.
* reverted file.
* add info colum to result to show error or (with CC evalmatches)
* fix labels in evalmatch
* fix be test
* refactored using observables.
* moved widht/height div to outside panel rendere.
* adding docs api level.
* adding container styles to error div.
* increasing size of preview.
Co-authored-by: kyle <kyle@grafana.com>
* HTTP Client: Add `ResponseHeaderTimeout` - split from `DialContext` timeout
* Fixes according to reviewer's comments
* Use grafana-plugin-sdk-go v0.100.0
* InfluxDB: InfluxQL query editor: better handling of slow queries
* adjusted message to be similar to other messages
* simplify code
Co-authored-by: Piotr Jamróz <pm.jamroz@gmail.com>
Co-authored-by: Piotr Jamróz <pm.jamroz@gmail.com>
* WIP: Implement simple caching
* If results are cached, don't run new query and use those results
* Add duplicate key check
* Clean up
* Clean up
* Add tests for caching
* Remove unused variables
* Update public/app/features/explore/state/query.test.ts
Co-authored-by: Piotr Jamróz <pm.jamroz@gmail.com>
* Update public/app/features/explore/state/query.test.ts
Co-authored-by: Piotr Jamróz <pm.jamroz@gmail.com>
* Use decorateData to apply all decorators
* Remove unused variables
* Change loading stte to Done
* Clear cache when running query from navigation
Co-authored-by: Piotr Jamróz <pm.jamroz@gmail.com>
* Invoke setScrollTop callback only after scrolling finishes
When the state is updated while scroll events are being dispatched (like in QueryGroup) it may cause resetting the scroll position to the first emitted event because setting the scroll happens only after render (useEffect).
* Memoize onScrollStop callback
* Increase number of backend test retries to 5
* Exclude release-branch pipelines
* Fixes according to reviewer's comments
* Refactor
* Remove unused arguments
* Remove magic number
* [Alerting]: forbid viewers for updating rules if viewers can edit
check for CanSave instead of CanEdit
* Clear ngalert tables when deleting the folder
* Apply suggestions from code review
* Log failure to check save permission
Co-authored-by: gotjosh <josue@grafana.com>
* Migrate template variables straight into resource field,
Display error if unable to migrate
* Update workspace() template variable query function to return a resource URI
* update backend to support resource uris in workspace field
* don't load resource names for variables
* throw error when workspace migration returns no results
* update testDatasource to work with either resource URI or workspace GUID
* fix tests
* cleanup types just a little bit, as a treat
* Alerting: Opsgenie notification channel
This translate the opsgenie notification channel from the old alerting
system to the new alerting system with a few changes:
- The tag system has been replaced in favour of annotation.
- TBD
- TBD
Signed-off-by: Josue Abreu <josue@grafana.com>
* Fix template URL
* Bugfig: dont send resolved when autoClose is false
Signed-off-by: Ganesh Vernekar <ganeshvern@gmail.com>
* Fix integration tests
Signed-off-by: Ganesh Vernekar <ganeshvern@gmail.com>
* Fix URLs in all other channels
Signed-off-by: Ganesh Vernekar <ganeshvern@gmail.com>
Co-authored-by: Ganesh Vernekar <ganeshvern@gmail.com>
Uses new httpclient package from grafana-plugin-sdk-go introduced
via grafana/grafana-plugin-sdk-go#328.
Replaces the GetHTTPClient, GetTransport, GetTLSConfig methods defined
on DataSource model.
Longer-term the goal is to migrate core HTTP backend data sources to use the
SDK contracts and using httpclient.Provider for creating HTTP clients and such.
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* Created exemplar folder and moved/renamed exemplar topic to new folder.
* More changes.
* More changes.
* More changes.
* Content structuring is complete.
* Added images.
* Updated filename.
* Updated image captions.
* Removed empty space.
* Adjusted image size.
* Corrected indentation and new image.
* Allow Route component usage in app plugins
* i tried
* fix catalog app
* fix catalog app
* remove catalog changes from this PR
* remove extra files
* feat(plugins): expose react-router to plugins rather than export via grafana-ui
* Bring back query and pathname to AppRootPage and add deprecation notice
Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>
* wip
* wip:
* ui work for resource picker
* disable rows when others are selected
* resource picker open button
* Azure Monitor: Connect to backend with real data (#34024)
* Connect to backend with real data
* Fixes from code review.
* WIP:Begin thinking about how to make queries with scope determined by the resource picker
* More fixes post code review.
* Fixes after rebasing
* Remove outdated todo
* AzureMonitor: Support any resource for Logs queries (#33762)
* Apply button for resource picker
* scroll table body
* secondary cancel button
* loading state for nested rows
* Display resource components in picker button
* fix tests
* fix icons
* move route function
* Migrate from workspace to resource uri for log analytics (#34337)
* reword backwards compat comment
* remove base url suffix
* fix lint error
* move migrations to seperate file
* cleanup
* update regex
* cleanup
* update plugin routes to use new azure auth type
* use AzureDataSourceInstanceSettings alias
Co-authored-by: Sarah Zinger <sarahzinger@users.noreply.github.com>
* ReleaseNotes: Updated changelog and release notes for 7.5.7
* Move colon into the emphasised section
* Move colon into the emphasised section
* Renamed PR title
* Update PR title
Co-authored-by: Serge Zaitsev <serge.zaitsev@grafana.com>
* Bar chart label positioning and sizing
* Dev dashbard
* Improve autosizing
* Remove sync option
* Unify text sizing options between stat-ish visualizations and bar chart
* Add simple categorical data scenario and update dev dashboard
* Remove unused options builder
* Add docs annotations
* Fix go lint
* Add discord notifier channel and test
* Correct payload
* remove print statement
* PR feedback and update due to changes in main
* Add discord notifier channel and test
* Correct payload
* remove print statement
* PR feedback and update due to changes in main
* update constructor and tests
* group imports sensibly
* Fix lint
Signed-off-by: Ganesh Vernekar <ganeshvern@gmail.com>
Co-authored-by: Ganesh Vernekar <ganeshvern@gmail.com>
* Do not sanitize the query while typing, but only onBlur or before the query is run
Otherwise sanitized value may cause update Slate component and trigger blur losing focus of the input
* Revert "Do not sanitize the query while typing, but only onBlur or before the query is run"
This reverts commit 00779889
* Avoid changing the input while typing
Cleaning happens on each change and with trimming it changes the value if the user types a space as the last character (may happen quite often while typing a query). In worst cases it's causing losing the focus in Slate if the space is typed before debounced change callback is triggered (500ms).
* Adding simplified version of query editor based on app flag.
* cleaned up the absolute time range.
* changing placeholder text.
* updated snapshot.
* added some tests.
* adding loki query editor tests.
* updating snapshots.
Rules/notifications/etc migration will now be activated with feature flag alone.
When the feature flag is enabled dashboard alerts are migrated into the system.
When the feature flag is removed, all migrated and newly created alerts in the new system are deleted.
* Determine Azure cloud based on authentication type
* Route resolution for clouds
* Fix tests
* Constants for cloud names
* move arg cloud route logic to routes.go
Co-authored-by: Erik Sundell <erik.sundell87@gmail.com>
* CSP: Relax default template, due to nonces not working
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
* CSP: Add back data: to img-src
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
* Add Azure Resource Graph in Azure Plugin
* fix lodash import
* Fix mock queries
* use "backend" sdk
* Address comments
* add converter for object type
* Query error should cause 400 & apply template var
* fix backend test & add documentation
* update image
* Address comments
* marshal body from map
* use interpolated query instead of raw query
* fix test
* filter out empty queries
* fix go linting problem
* use new query field language name
* improve variable tests
* add better tests for interpolate variable
Co-authored-by: joshhunt <josh@trtr.co>
Co-authored-by: Erik Sundell <erik.sundell87@gmail.com>
* force enable catalog based on backend config
* update comments
* chore(plugin-catalog): remove config page in favour of backend flag
* docs(plugin-catalog): update readme
Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>
* add support for handling preprocessors in the backend
* add preprocessor tests
* use uppercase for constants
* add super label component
* remove error message from query editor since its not working (probably cause onDataError doesnt work anymore)
* use cheat sheet instead of help
* add return type annotation for projects
* add support for preprocessing. replace segment comp with select. change components names and refactoring
* cleanup
* more pr feedback
* fix annotations editor
* rename aggregation component
* fix broken test
* remove unnecessary cast
* fix strict errors
* fix more strict errors
* remove not used prop
* update docs
* use same inline label for annotation editor
* fix react prop warning
* disable preprocessing for distribution types
* using new default values for reducer
* auto select 'rate' if metric kind is not gauge
* fix create label format
* pr feedback
* more pr feedback
* update images
* remove text alignment, per-box hover for grid, fix mergeValues
* unconditionally set spanNulls = -1
* fix stroke width offset math
* split multi-hover, so only single mark overlays in grid mode
* restore alignValue in state-timeline
* better descriptions, maybe
* init field.config.custom if necessary
* don't show last out-of-view value
Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
* Loki/Prometheus: Improve label browser performance
- raise limits
- introduce debounce for Metrics browser filter fields (not done for Loki)
- discard facetting responses when selector was already changed again by user
* Clean up comments and imports
* [Alerting]: Add sensugo notification channel
* Apply suggestions from code review
Co-authored-by: Ganesh Vernekar <15064823+codesome@users.noreply.github.com>
* Do not include labels with concatenated rule UID and names
* Modifications after syncing with main
Co-authored-by: Ganesh Vernekar <15064823+codesome@users.noreply.github.com>
* VizWrapper to handle some state
* alertingqueryrunner first edition
* added so we always set name and uid when changing datasource.
* wip.
* wip
* added support for canceling requests.
* util for getting time ranges for expression queries
* remove logs, store data in state
* merge from run branch
* incremental commit
* viz working
* added structure for marble testing.
* paddings and move viz picker
* less height for viz, less width on rows
* change so the expression buttons doesnt submit form.
* fixed run button.
* replaced mocks with implementation that will set default query + expression.
* merge with run queries
* fixed so we set a datasource name for the default expression rule.
* improving expression guard.
* lots of styling fixes for viz
* adding placeholder for relative time range.
* fixed story.
* added basic structure to handle open/close of time range picker.
* removed section from TimeOptions since it isn't used any where.
* adding mapper and tests
* move relativetimepicker to its own dir
* added some simple tests.
* changed test.
* use relativetimerangeinput
* redo state management
* refactored the tests.
* replace timerange with relativetimerange
* wip
* wip
* did some refactoring.
* refactored time option formatting.
* added proper formatting and display of time range.
* add relative time description, slight refactor of height
* fixed incorrect import.
* added validator and changed formatting.
* removed unused dep.
* reverted back to internal function.
* fixed display of relative time range picker.
* fixed failing tests.
* fixed parsing issue.
* fixed position of time range picker.
* some more refactorings.
* fixed validation of really big values.
* added another test.
* restored the step2 check.
* fixed merge issue.
* Update packages/grafana-ui/src/components/Forms/RadioButtonGroup/RadioButtonGroup.tsx
Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>
* reverted change.
* fixed merge conflict.
* fixed todo.
* sort some paddings
* replace theme with theme2
Co-authored-by: Peter Holmberg <peter.hlmbrg@gmail.com>
Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>
* Elasticsearch: don't add bucket aggregations when importing log queries
* Elasticsearch: Do not render Bucket Aggs editor if query contains a 'single metric' metric
When, and currently only when using a classic condition, evaluation information is added (which is like the EvalMatches from dashboard alerting).
This is returned via the API and can be included in notifications by reading the `__value__` label attached `.Alerts` in the template. It is a string.
* Show log details in Logs panel
* Add hide log details as panel option
* Refactor tests to use testing library
* Change hideLogDetails to enableLogsDetails
* Add enableLogDetails to test file
* Dashboard: Fix editing panel with auto-refresh
- Add default hidden and disabled auto-refresh option on the editing panel
- Extend unit test for DashboardModel
- Add unit test DashNavTimeControls component
* Alerting: Allow the notifier to log
The notifier upstream code uses go-kit as its logging library. The
grafana specific logger is not compatible with this API. In this PR, I
have created a wrapper that implements io.Writer to make them
compatible.
* Use state.eventBridge for errors only if angular editor (some SQL data sources are still listening on this)
* Update public/app/features/explore/state/query.ts
* Update public/app/features/explore/state/query.ts
* TextArea: updates story from knobs to control
* removed the cols control since it has no effect on component
Co-authored-by: Hugo Häggmark <hugo.haggmark@gmail.com>
* Tables: updates story from knobs to control
* removes the Descending and sortByDisplayName controls since they have no effect on component
Co-authored-by: Hugo Häggmark <hugo.haggmark@gmail.com>
* build(yarn): run yarn-deduplicate on lock file
* chore(npm): clean up moment dependencies
* chore(npm): move dev dependencies out of dependencies
* chore(npm): bump moment-timezone to fix TS errors
* chore(npm): move dev dependencies to devDependencies in package.json
This patch adds metrics to support instrumenting the accesscontrols package.
It also instruments the accesscontrol evaluator and the permissions function.
Co-authored-by: Vardan Torosyan <vardants@gmail.com>
* add tests
* CloudWatch: Allow use of missing AWS namespaces using custom metrics
* CloudWatch: Allow use of missing AWS namespaces using custom metrics
* add field to plugin meta
* only show cache settings if pluginMeta has "isBackend"
Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
* Devenv: add block for es 5.0, provisioned datasource & dashboard
* Trasnsform script property based on running ES version
* Handle different scripts format in BE
* Timeline: Text align option, but does not work
* working text alignment
* Refactoring and fixing rendering text values on the right edge that does not fit
Co-authored-by: Leon Sorokin <leeoniya@gmail.com>
* Update dashboard_snapshot.go
This is to address: https://github.com/grafana/grafana/issues/33665
The key and deleteKey fields are not honoured when creating a snapshot with external:true set
* removed whitespace
Instead put in package folder but with package name suffixed with _test
This enables code coverage within the pkg while still allow the tests to operate from external to package perspective (only exported things).
* Add e2e test for exemplars flow
* Check if data source is created
* Lets see what is going on
* Try again
* Updating the image maybe?
* Revert "Updating the image maybe?"
This reverts commit 968b44b0d9.
* Try with force
* Use electron
* Wait for new url?
* Wait?????
* Should be good now
* Revert e2e recording
* MinMax: Highlight issues with skipping field overrides
* check global range
* more selective
* basic test
* moved into getFieldDisplayValues
Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
* Initial design for new viz colors
* added unit tests
* Progress
* Updated selected color
* Use old named color names and colors to begin with
* Updates
* Fixing tests
* Progress
* Updates
* updating
* fixing tests
* Using some named colors
* renames && fixes
* remove plural
* fixed tests
* add uninstall flow
* add install flow
* small cleanup
* smaller-footprint solution
* cleanup + make bp start auto
* fix interface contract
* improve naming
* accept version arg
* ensure use of shared logger
* make installer a field
* add plugin decommissioning
* add basic error checking
* fix api docs
* making initialization idempotent
* add mutex
* fix comment
* fix test
* add test for decommission
* improve existing test
* add more test coverage
* more tests
* change test func to use read lock
* refactoring + adding test asserts
* improve purging old install flow
* improve dupe checking
* change log name
* skip over dupe scanned
* make test assertion more flexible
* remove trailing line
* fix pointer receiver name
* update comment
* add context to API
* add config flag
* add base http api test + fix update functionality
* simplify existing check
* clean up test
* refactor tests based on feedback
* add single quotes to errs
* use gcmp in tests + fix logo issue
* make plugin list testing more flexible
* address feedback
* fix API test
* fix linter
* undo preallocate
* Update docs/sources/administration/configuration.md
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
* Update docs/sources/administration/configuration.md
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
* Update docs/sources/administration/configuration.md
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
* fix linting issue in test
* add docs placeholder
* update install notes
* Update docs/sources/plugins/marketplace.md
Co-authored-by: Marcus Olsson <marcus.olsson@hey.com>
* update access wording
* add more placeholder docs
* add link to more info
* PR feedback - improved errors, refactor, lock fix
* improve err details
* propagate plugin version errors
* don't autostart renderer
* add H1
* fix imports
* feat(bundled-plugins): introduce marketplace-app to the repo
* chore(marketplace-app): remove backend
* feat(marketplace): nav is only visible to admins
* feat(marketplace): use gnet api
* refactor(marketplace): move styles to theme2 move card concerns to card component
* feat(marketplace): introduce loaders, clean up styles
* refactor(marketplace): wip - debugging for api endpoints
* feat(grafana-ui): introduce height prop to Layout components
* refactor(marketplace): clean up org details component
* fix(marketplace): display search results without active filters
* refactor(marketplace): use grafana api for install/uninstall
* refactor(marketplace): remove pluginDir
* feat(marketplace): clean up Library page
* fix(plugins): get panel plugins from meta for newly installed plugins
* fix(marketplace): fix multiple renders of InstallControls when installing/uninstalling plugins
* refactor(marketplace): componentise the loader
* chore(marketplace): remove unsigned plugins option
* refactor(marketplace): remove includeUnsigned from codebase
* refactor(marketplace): prefer useStyles over useTheme
* docs(marketplace): remove changelog and update readme
* Apply suggestions from code review
Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
* refactor(marketplace): prefer module over class for api
* refactor(marketplace): move updatePlugin to api
* refactor(marketplace): add PluginMeta to api to please TS
* feat(marketplace): always include pre-release in semver check
* chore(marketplace): remove redundant arch install code. backend handles it now
* feat(marketplace): add a link to browse page if library is empty
* refactor(marketplace): replace status with isLoading boolean for hooks
* refactor(marketplace): clean up async functions in InstallControls
* fix(marketplace): setInstalled false on successful uninstall
* include marketplace in bundled plugin test
Co-authored-by: Will Browne <will.browne@grafana.com>
Co-authored-by: Will Browne <wbrowne@users.noreply.github.com>
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
Co-authored-by: Marcus Olsson <marcus.olsson@hey.com>
Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
* add uninstall flow
* add install flow
* small cleanup
* smaller-footprint solution
* cleanup + make bp start auto
* fix interface contract
* improve naming
* accept version arg
* ensure use of shared logger
* make installer a field
* add plugin decommissioning
* add basic error checking
* fix api docs
* making initialization idempotent
* add mutex
* fix comment
* fix test
* add test for decommission
* improve existing test
* add more test coverage
* more tests
* change test func to use read lock
* refactoring + adding test asserts
* improve purging old install flow
* improve dupe checking
* change log name
* skip over dupe scanned
* make test assertion more flexible
* remove trailing line
* fix pointer receiver name
* update comment
* add context to API
* add config flag
* add base http api test + fix update functionality
* simplify existing check
* clean up test
* refactor tests based on feedback
* add single quotes to errs
* use gcmp in tests + fix logo issue
* make plugin list testing more flexible
* address feedback
* fix API test
* fix linter
* undo preallocate
* Update docs/sources/administration/configuration.md
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
* Update docs/sources/administration/configuration.md
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
* Update docs/sources/administration/configuration.md
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
* fix linting issue in test
* add docs placeholder
* update install notes
* Update docs/sources/plugins/marketplace.md
Co-authored-by: Marcus Olsson <marcus.olsson@hey.com>
* update access wording
* add more placeholder docs
* add link to more info
* PR feedback - improved errors, refactor, lock fix
* improve err details
* propagate plugin version errors
* don't autostart renderer
* add H1
* fix imports
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
Co-authored-by: Marcus Olsson <marcus.olsson@hey.com>
* Fix tooltip not closing
* make this a bit less hacky
* use a more specific element for the mouseleave event
* Make sure we limit running of effect
* Remove console log
* Probably don't need useCallback
* adding placeholder for relative time range.
* fixed story.
* added basic structure to handle open/close of time range picker.
* removed section from TimeOptions since it isn't used any where.
* adding mapper and tests
* move relativetimepicker to its own dir
* added some simple tests.
* changed test.
* use relativetimerangeinput
* redo state management
* refactored the tests.
* replace timerange with relativetimerange
* wip
* wip
* did some refactoring.
* refactored time option formatting.
* added proper formatting and display of time range.
* add relative time description, slight refactor of height
* fixed incorrect import.
* added validator and changed formatting.
* removed unused dep.
* reverted back to internal function.
* fixed display of relative time range picker.
* fixed failing tests.
* fixed parsing issue.
* fixed position of time range picker.
* some more refactorings.
* fixed validation of really big values.
* added another test.
Co-authored-by: Peter Holmberg <peter.hlmbrg@gmail.com>
* Rendering: add CSV rendering support
* Rendering: save csv files into a separate folder
* add missing field
* Renderer: get filename from renderer plugin
* apply PR suggestions
* Rendering: remove old PhantomJS error
* Rendering: separate RenderCSV and Render functions
* fix alerting test
* Rendering: fix handling error in HTTP mode
* apply PR feedback
* Update pkg/services/rendering/http_mode.go
Co-authored-by: Joan López de la Franca Beltran <joanjan14@gmail.com>
* apply PR feedback
* Update rendering metrics with type label
* Rendering: return error if not able to parse header
* Rendering: update grpc generated file
* Rendering: use context.WithTimeout to render CSV too
Co-authored-by: Joan López de la Franca Beltran <joanjan14@gmail.com>
* RangeSlider: updates story from knobs to control
* changed the orientation control to type Select
* removes tooltipAlwaysVisible control since it crashes the story
* Add exploration option to node layout
* Add hidden node count
* Add grid layout option
* Fix panning bounds calculation
* Add legend with sorting
* Allow sorting on any stats or arc value
* Fix merge
* Make sorting better
* Reset focused node on layout change
* Refactor limit hook a bit
* Disable selected layout button
* Don't show markers if only 1 node is hidden
* Move legend to the bottom
* Fix text backgrounds
* Add show in graph layout action in grid layout
* Center view on the focused node, fix perf issue when expanding big graph
* Limit the node counting
* Comment and linting fixes
* Bit of code cleanup and comments
* Add state for computing layout
* Prevent computing map with partial data
* Add rollup plugin for worker
* Add rollup plugin for worker
* Enhance data from worker
* Fix perf issues with reduce and object creation
* Improve comment
* Fix tests
* Css fixes
* Remove worker plugin
* Add comments
* Fix test
* Add test for exploration
* Add test switching to grid layout
* Apply suggestions from code review
Co-authored-by: Zoltán Bedi <zoltan.bedi@gmail.com>
* Remove unused plugin
* Fix function name
* Remove unused rollup plugin
* Review fixes
* Fix context menu shown on layout change
* Make buttons bigger
* Moved NodeGraph to core grafana
Co-authored-by: Zoltán Bedi <zoltan.bedi@gmail.com>
* Enterprise changes to the Drone pipelines
This is basically a no-op in this repository, except for the fact that the grafanabot personal access token will now be fetched from Vault instead of repository secrets
This will pave the way for us to fetch all secrets from Vault
* Update star files from enterprise
* Add missingn newline
* Store queries that were run to get log results
* Fix typing
* Update public/app/features/explore/Logs.tsx
Co-authored-by: Gábor Farkas <gabor.farkas@gmail.com>
* Add changes based on feedback
Co-authored-by: Gábor Farkas <gabor.farkas@gmail.com>
* [WIP] Metrics browser
* Removed unused import
* Metrics selection logic
* Remove redundant tests
All data is fetched now regardless to the current range so test for checking reloading the data on the range change are no longer relevant.
* Remove commented out code blocks
* Add issue number to todos
Co-authored-by: Piotr Jamróz <pm.jamroz@gmail.com>
* Update UI
* Update UI, return spinner
* Add title to Scroll to top button
* Update public/app/features/explore/Logs.tsx
Co-authored-by: Gábor Farkas <gabor.farkas@gmail.com>
* Update public/app/features/explore/LogsNavigation.test.tsx
Co-authored-by: Gábor Farkas <gabor.farkas@gmail.com>
* Remove unnecessary memoization
* Update public/app/features/explore/LogsNavigationPages.tsx
Co-authored-by: Gábor Farkas <gabor.farkas@gmail.com>
* Adds support for Tooltip in BarChartPanel
* Revert some formatting
* Remove BarChart story
* BarChart: move visualization to core
* BarChart: enable series toggling via legend
Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
* Convert credentials form to a functional component
* Encapsulation of Azure credentials logic
* Fix selection of subscriptions
* Load subscriptions on init and save options only if they're unsaved
* Functions for resolution of routes
* Resolve routes of all API requests
* Reset default value if not found anymore
* Fix tests
* Symbol to conceal secret
* Adds support for Tooltip in BarChartPanel
* Revert some formatting
* Remove BarChart story
* BarChart: move visualization to core
Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
* alternative mapping editor
* alternative mapping editor
* values updating
* UI updates
* remove empty operators
* fix types
* horizontal
* New value mapping model and migration
* DataSource: show the uid in edit url, not the local id (#33818)
* update mapping model object
* Update to UI
* fixing ts issues
* Editing starting to work
* adding missing thing
* Update display processor to use color from value mapping
* Range maps now work
* Working on unit tests for modal editor
* Updated
* Adding new NullToText mapping type
* Added null to text UI
* add color from old threshold config
* Added migration for overrides, added Type column
* Added compact view model with color edit capability
* [Alerting]: store encrypted receiver secure settings (#33832)
* [Alerting]: Store secure settings encrypted
* Move encryption to the API handler
* CloudMonitoring: Migrate config editor from angular to react (#33645)
* fix broken config ctrl
* replace angular config with react config editor
* remove not used code
* add extra linebreak
* add noopener to link
* only test jwt props that we actually need
* Elasticsearch: automatically set date_histogram field based on data source configuration (#33840)
* Docs: delete from high availability docs references to removed configurations related to session storage (#33827)
* docs: delete from high availability docs references to removed configurations related to session storage
* docs: remove session storage mention and focus on the auth token implementation
* fix postgres to have precision of ms (#33853)
* Use ids for enterprise nav model items (#33854)
* Alerting: Disable dash alerting if NG enabled (#33794)
* Scuemata: Add grafana-cli cue schema validation to CI (#33798)
* Add scuemata validation in CI
* Fixes according to reviewer's comments
* Ensure http client has no timeout (#33856)
* Redact sensitive values before logging them (#33829)
* use a common way to redact sensitive values before logging them
* fix panic on missing testCase.err, simplify require checks
* fix a silly typo
* combine readConfig and buildConnectionString methods, as they are closely related
* Tempo: Search for Traces by querying Loki directly from Tempo (#33308)
* Loki query from Tempo UI
- add query type selector to tempo
- introduce linkedDatasource concept that runs queries on behalf of another datasource
- Tempo uses Loki's query field and Loki's derived fields to find a trace matcher
- Tempo uses the trace-to-logs mechanism to determine which dataource is linked
Loki data loads successfully via tempo
Extracted result transformers
Skip null values
Show trace on list id click
Query type selector
Use linked field trace regexp
* Review feedback
* Add isolation level db configuration parameter (#33830)
* add isolation level db configuration parameter
* add isolation_level to default.ini and sample.ini
* add note that only mysql supports isolation levels for now
* mention isolation_level in the documentation
* Update docs/sources/administration/configuration.md
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
* Drawer: fixes title overflowing its container (#33857)
* Timeline: move grafana/ui elements to the panel folder (#33803)
* revendor loki with new Tripperware (#33858)
* live: move connection endpoint to api scope, fixes#33861 (#33863)
* OAuth: Add support for empty scopes (#32129)
* add parameter empty_scopes to override scope parameter with empty value and thus be able to authenticate against IdPs without scopes. Issue #27503
Update docs/sources/auth/generic-oauth.md
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
* updated check according to feedback
* Update generic-oauth.md
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
* Prometheus: Fix exemplars hover disappearing and broken link (#33866)
* Revert "Tooltip: eliminate flickering when repaint can't keep up (#33609)"
This reverts commit e159985aa2.
* Fix exemplar linking
Co-authored-by: David Kaltschmidt <david.kaltschmidt@gmail.com>
* Removed content as per MarcusE's suggestion in https://github.com/grafana/grafana/issues/33822. (#33870)
* Fixed grammar usage. (#33871)
* Explore: Wrap each panel in separate error boundary (#33868)
* New Panel: Histogram (#33752)
* Sanitize PromLink button (#33874)
* Refactor and unify option creation between new visualizations (#33867)
* Refactor and unify option creation between new visualizations
* move to grafana/ui
* move to grafana/ui
* resolve duplicate scale config
* more imports
Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
* Live: do not show connection warning when on the login page (#33865)
* enforce receivers align with backend type when posting AM config (#33877)
* special values
* merge fix
* Document `hide_version` flag (#33670)
Unauthenticated users can be barred from being shown the current Grafana server version since https://github.com/grafana/grafana/pull/24919
* GraphNG: always use "x" as scaleKey for x axis (#33884)
* Timeline: add support for strings & booleans (#33882)
* Chore(deps): Bump hosted-git-info from 2.8.5 to 2.8.9 (#33886)
Bumps [hosted-git-info](https://github.com/npm/hosted-git-info) from 2.8.5 to 2.8.9.
- [Release notes](https://github.com/npm/hosted-git-info/releases)
- [Changelog](https://github.com/npm/hosted-git-info/blob/v2.8.9/CHANGELOG.md)
- [Commits](https://github.com/npm/hosted-git-info/compare/v2.8.5...v2.8.9)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* merge with torkel
* add empty special character
* Fixed centered text in special value match select
* fixed unit tests
* Updated snapshot
* Update dashboard page
* updated snapshot
* Fix more unit tests
* Fixed test
* Updates
* Added back tests
* Fixed doc issue
Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
Co-authored-by: Sofia Papagiannaki <papagian@users.noreply.github.com>
Co-authored-by: Erik Sundell <erik.sundell@grafana.com>
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
Co-authored-by: Daniel dos Santos Pereira <danield1591998@gmail.com>
Co-authored-by: ying-jeanne <74549700+ying-jeanne@users.noreply.github.com>
Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
Co-authored-by: Kyle Brandt <kyle@grafana.com>
Co-authored-by: Dimitris Sotirakis <dimitrios.sotirakis@grafana.com>
Co-authored-by: Will Browne <wbrowne@users.noreply.github.com>
Co-authored-by: Serge Zaitsev <serge.zaitsev@grafana.com>
Co-authored-by: David <david.kaltschmidt@gmail.com>
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
Co-authored-by: Uchechukwu Obasi <obasiuche62@gmail.com>
Co-authored-by: Owen Diehl <ow.diehl@gmail.com>
Co-authored-by: Alexander Emelin <frvzmb@gmail.com>
Co-authored-by: jvoeller <48791711+jvoeller@users.noreply.github.com>
Co-authored-by: Zoltán Bedi <zoltan.bedi@gmail.com>
Co-authored-by: Andrej Ocenas <mr.ocenas@gmail.com>
Co-authored-by: Leon Sorokin <leeoniya@gmail.com>
Co-authored-by: Ivana Huckova <30407135+ivanahuckova@users.noreply.github.com>
Co-authored-by: Oscar Kilhed <oscar.kilhed@grafana.com>
Co-authored-by: Tristan Deloche <tde@hey.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Unify tooltip options across visualizations
* Update tests
* use addTooltipOptions in piechart
Co-authored-by: Oscar Kilhed <oscar.kilhed@grafana.com>
* fix(grafana-ui): re-export commonOptionsBuilder namespace for api-extractor to work
* docs(grafana-ui): add docblock annotations for exported interfaces
* docs(grafana-ui): export ScaleDistribution from uplot
makes it so the feature flag can be turned on off, and the migration will be cleared and rerun. All existing NG alert rules, configuration settings, etc are removed when disabling the feature flag.
for https://github.com/grafana/alerting-squad/issues/142
Co-authored-by: Sofia Papagiannaki <sofia@grafana.com>
* Elasticsearch: use proper semver strings to identify ES version
* Update BE & tests
* refactor BE tests
* refactor isValidOption check
* update test
* Update pkg/tsdb/elasticsearch/client/client.go
Co-authored-by: Piotr Jamróz <pm.jamroz@gmail.com>
* Update pkg/tsdb/elasticsearch/client/search_request_test.go
Co-authored-by: Piotr Jamróz <pm.jamroz@gmail.com>
* Remove leftover FIXME comment
* Add new test cases for new version format
* Docs: add documentation about version dropdown
* Update docs/sources/datasources/elasticsearch.md
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
* Update docs/sources/datasources/elasticsearch.md
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
* Update docs/sources/datasources/elasticsearch.md
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
* Update provisioning documentation
Co-authored-by: Piotr Jamróz <pm.jamroz@gmail.com>
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
* WIP: intial structure
* Refactor: adds create library element endpoint
* Feature: adds delete library element
* wip
* Refactor: adds get api
* Refactor: adds get all api
* Refactor: adds patch api
* Refactor: changes to library_element_connection
* Refactor: add get connections api
* wip: in the middle of refactor
* wip
* Refactor: consolidating both api:s
* Refactor: points front end to library elements api
* Tests: Fixes broken test
* Fix: fixes delete library elements in folder and adds tests
* Refactor: changes order of tabs in manage folder
* Refactor: fixes so link does not cover whole card
* Update pkg/services/libraryelements/libraryelements.go
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* Update pkg/services/libraryelements/libraryelements_permissions_test.go
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* Update pkg/services/libraryelements/database.go
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* Chore: changes after PR comments
* Update libraryelements.go
* Chore: updates after PR comments
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* Refactor and unify option creation between new visualizations
* move to grafana/ui
* move to grafana/ui
* resolve duplicate scale config
* more imports
Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
* add isolation level db configuration parameter
* add isolation_level to default.ini and sample.ini
* add note that only mysql supports isolation levels for now
* mention isolation_level in the documentation
* Update docs/sources/administration/configuration.md
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
* Loki query from Tempo UI
- add query type selector to tempo
- introduce linkedDatasource concept that runs queries on behalf of another datasource
- Tempo uses Loki's query field and Loki's derived fields to find a trace matcher
- Tempo uses the trace-to-logs mechanism to determine which dataource is linked
Loki data loads successfully via tempo
Extracted result transformers
Skip null values
Show trace on list id click
Query type selector
Use linked field trace regexp
* Review feedback
* use a common way to redact sensitive values before logging them
* fix panic on missing testCase.err, simplify require checks
* fix a silly typo
* combine readConfig and buildConnectionString methods, as they are closely related
* docs: delete from high availability docs references to removed configurations related to session storage
* docs: remove session storage mention and focus on the auth token implementation
* fix broken config ctrl
* replace angular config with react config editor
* remove not used code
* add extra linebreak
* add noopener to link
* only test jwt props that we actually need
* Initial work
* WIP add cursor in debug panel
* shared cursor.sync filter
* explicit uplot events
* explicit uplot events
* uplot events
* uplot events
* depend on master uplot
* sync sync sync
* Fix merge
* Get rid of PlotSyncContext and sync tooltip positions
* make sync optional
* Improve shared tooltip positioning
* Plugins: add level and signature badges to plugin details page (#33553)
* feat(grafana-ui): badge can accept react node for text, add shield-exclamation to icons
* feat(plugins): add PluginSignatureType type
* feat(pluginpage): introduce PluginSignatureDetailsBadge. Fix sidebar icon margin
* feat(pluginlistpage): update filterinput placeholder, introduce filter by plugin type
* Variables: Removes the never refresh option (#33533)
* Variables: Removes the never refresh option
* Tests: fixes DashboardModel repeat tests
* Tests: fixs snapshots
* Tests: fixes processVariable test
* Tests: fixes DashboardModel tests
* PageLayout: Fixes max-width breakpoint so that it triggers only when there is room for margin+ (#33558)
* Alerting: Remove datasource (name) from migration (#33544)
no longer needed as of https://github.com/grafana/grafana/pull/33416
for https://github.com/grafana/alerting-squad/issues/126
* Library panels: Adds description to library panels tab (#33428)
* CodeOwners: Set owners of unified alerting migration (#33571)
* ButtonSelect: updates component with the new theme model (#33565)
* EmptySearchResult: updates component with the new theme model (#33573)
* DashboardSettings: Slight design tweak to fix page toolbar padding and align design (#33575)
* DashboardSettings: Slight design tweak to fix page toolbar padding and align design
* Fixed font weight
* Removed comment
* Update
* gitignore: Ignore files for accesscontrol provisioning (#33577)
* Alerting/metrics (#33547)
* moves alerting metrics to their own pkg
* adds grafana_alerting_alerts (by state) metric
* alerts_received_{total,invalid}
* embed alertmanager alerting struct in ng metrics & remove duplicated notification metrics (already embed alertmanager notifier metrics)
* use silence metrics from alertmanager lib
* fix - manager has metrics
* updates ngalert tests
* comment lint
Signed-off-by: Owen Diehl <ow.diehl@gmail.com>
* cleaner prom registry code
* removes ngalert global metrics
* new registry use in all tests
* ngalert metrics impl service, hack testinfra code to prevent duplicate metric registrations
* nilmetrics unexported
* Add note to Snapshot API doc to specify that user has to provide the entire dashboard model (#33572)
* Added note as suggested by Macus E.
* Update docs/sources/http_api/snapshot.md
Co-authored-by: Ursula Kallio <73951760+osg-grafana@users.noreply.github.com>
Co-authored-by: Ursula Kallio <73951760+osg-grafana@users.noreply.github.com>
* Alerting: backend "ng" code cleanup (#33578)
* AlertMigration: remove alert_rule UID db check (#33568)
do not believe this is needed due to uniqueness promised by shortid lib
since there is no provisioning yet. https://github.com/teris-io/shortid
* Live: persisting last message in cache for broadcast scope (#32938)
* Alerting: Load annotations from rule into State cache (#33542)
for https://github.com/grafana/alerting-squad/issues/127
* add template for dashboard url parameters (#33549)
* Update dashboard-links.md
parameters with plain text like `var-something=value` can make confusion.
template it to clarify .
* describe way for template link.
* AlertingMigration: Create alert_rule_version entry (#33585)
Create the alert rule version entry during the migration so it is consistent with rules created via api.
for https://github.com/grafana/alerting-squad/issues/123
* Build: Fix with cleanup call maybe? (#33590)
* add selector for code editor (#33554)
* broadcast over eventBus
* broadcasting to eventbus (but not useing it yet)
* merge master
* moved to context
* fix yarn.lock
* update snapshot
* Fix direct state mutation
* Persist location state on partial updates
* GraphNG- use getStream rather than subscribe
* Sync LegacyGraphHoverEvent with GraphNG
* Chenge plotRef signature
* use subscription
* subscription
* one fewer file
* Update types
* Remove unnecessary filtering
* Disable cursor sync when in edit mode
* GraphNG - bring back logging
Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
Co-authored-by: Leon Sorokin <leeoniya@gmail.com>
Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>
Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>
Co-authored-by: Torkel Ödegaard <torkel@grafana.org>
Co-authored-by: Kyle Brandt <kyle@grafana.com>
Co-authored-by: kay delaney <45561153+kaydelaney@users.noreply.github.com>
Co-authored-by: Uchechukwu Obasi <obasiuche62@gmail.com>
Co-authored-by: gamab <gamab@users.noreply.github.com>
Co-authored-by: Owen Diehl <ow.diehl@gmail.com>
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
Co-authored-by: Ursula Kallio <73951760+osg-grafana@users.noreply.github.com>
Co-authored-by: Alexander Emelin <frvzmb@gmail.com>
Co-authored-by: Nagle Zhang <nagle.zhang@sap.com>
Co-authored-by: Erik Sundell <erik.sundell@grafana.com>
* Clarify active user restrictions
Add language around licensing details, based on confusion form some customers.
* wording update for consistency
Co-authored-by: Vardan Torosyan <vardants@gmail.com>
* remove dash
Co-authored-by: Vardan Torosyan <vardants@gmail.com>
* wording improvement
Co-authored-by: Vardan Torosyan <vardants@gmail.com>
* orgs -> organizations
Co-authored-by: Vardan Torosyan <vardants@gmail.com>
* remove extra space
Co-authored-by: Vardan Torosyan <vardants@gmail.com>
* org -> organization
Co-authored-by: Vardan Torosyan <vardants@gmail.com>
* add description and update name of licensing role
also make editor/admins terminology more consistent.
* update "licensing role" to "licensed role"
Co-authored-by: Vardan Torosyan <vardants@gmail.com>
* PanelEdit: Adds raw data toggle to quickly be able to view data in table form
* With transforms
* Updated name for toggle
* refactoring and added e2e test
* Support options
* fixing e2e
* AuthType in route configuration
* Pass interpolated auth parameters to token provider
* Unit tests
* Update after review
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
Fixes#33669Closed#33732
* Create basic prototype for Loki integration
* Simplify importing queries
* Code clean-up
* Add test coverage and info box
* Remove test data script
* Update help
* Use less space for mappings info
* Make help screen dismissable
* Make mappings help more generic
* Convert learn more to a link
* Remove unused param
* Use a link Button for help section
* Add an extra line for better formatting
* Update public/app/plugins/datasource/graphite/configuration/MappingsHelp.tsx
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
* Update public/app/plugins/datasource/graphite/configuration/MappingsHelp.tsx
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
* Re-arrange lines
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
* support default
* fix
* fix
* fix better
* Refactor: simplifies the logic a bit and changes test description
Co-authored-by: Hugo Häggmark <hugo.haggmark@gmail.com>
* check for jaeger env variables if tracing address configuration is empty
* add tests to ensure jaeger host/port variables override the settings
* allow default host and custom port, too
* disallow missing tracing.jaeger section in the config
* check for all errors in tests
* make parseSettings() return an error
* LibraryPanels: Adds folder filter
* Refactor: Adds folder filter to library search
* Refactor: splits huge function into smaller functions
* LibraryPanels: Adds Panels Page to Manage Folder tabs (#33618)
* Chore: adds tests to LibraryPanelsSearch
* Refactor: Adds reducer and tests
* Chore: changes GrafanaThemeV2
* Refactor: adds folderName to get all result
* Refactor: adds folderName to get result
* Refactor: adds folder name to LibraryPanelDTOMeta
* Refactor: adds folder name to lbirary panels result
* Chore: reverts public/app/routes/routes.tsx to master
* Minor style tweak
* Refactor: adds folder uid to meta
* Chore: updates after PR comments
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
* nest cache by orgID, ruleUID, stateID
* update accessors to use new cache structure
* test and linter fixup
* fix panic
Co-authored-by: Kyle Brandt <kyle@grafana.com>
* add comment to identify what's going on with nested maps in cache
Co-authored-by: Kyle Brandt <kyle@grafana.com>
* Quota: Extend service to set limit on alerts
* Add test for applying quota to alert rules
* Apply suggestions from code review
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
* Get used alert quota only if naglert is enabled
* Set alert limit to zero if nglalert is not enabled
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
* alertingqueryrunner first edition
* added so we always set name and uid when changing datasource.
* wip.
* wip
* added support for canceling requests.
* util for getting time ranges for expression queries
* remove logs, store data in state
* added structure for marble testing.
* change so the expression buttons doesnt submit form.
* fixed run button.
* replaced mocks with implementation that will set default query + expression.
* fixed so we set a datasource name for the default expression rule.
* improving expression guard.
* Update public/app/features/alerting/components/AlertingQueryEditor.tsx
Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>
* fixed some nits.
* some refactoring after feedback.
* use grafanthemev2
* rename grafanatheme
* fixing so we convert to correct relative time range.
* added some more tests.
* fixing so duplicating query works.
* added some more tests without marbles.
* small refactoring to share code between runRequest and alerting query runner.
Co-authored-by: Marcus Andersson <marcus.andersson@grafana.com>
Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>
* TimeSeries: First take on uplot thresholds rendering
* Updating theme for color picker and fixing issues
* Updating theme for color picker and fixing issues
* Minor progress
* Added test dashboard
* Adding transparent and text colors to color picker and making them visible
* Good progress on migrations
* Fixed selected issue in color picker
* Fixes
* migration fix
* Fixed test
* Fixing line rendering and refactoring
* Minor ordering fix
* fixed test
* Draw thresholds before axes & series and other tweaks
* Update packages/grafana-ui/src/components/uPlot/config/UPlotThresholds.ts
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
Following discussion in grafana/grafana-enterprise#1292, removing
org-scoped users scopes to make it clear that the local organization is
the default and the alternative to that is a global scope (for a select
few endpoints)
* Alerting: Support for alerting for react panels, and lots of fixes to alert annotations for both react and angular
* Fix showing annotations in panel edit
* Update dashboard-links.md
parameters with plain text like `var-something=value` can make confusion.
template it to clarify .
* describe way for template link.
* tests: Undo cleanup in goroutine
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
* Server: Implement timeout waiting for it to shut down
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
* Theme: Page styles move to emotion global styles and design tweaks
* More style tweaks
* tweaks
* Updating snapshots
* Another fix
* Another fix
* minor fix
* More style tweaks to page toolbar and alert rule page
* minor polish
this dashboard is most useful when being able to look at a service in particular. I tried making a multi-value but it did not produce good results. Having to choose, seeing a single service's metrics is better than the busy panels when all services are lumped together.
Signed-off-by: naseemkullah <naseem@transit.app>
* Not complete, put migration behind env flag for now:
UALERT_MIG=iDidBackup
* Important to backup, and not expect the same DB to keep working until the env trigger is removed.
* Alerting: Migrate dashboard alert permissions
* Do not use imported models
* Change folder titles
Co-authored-by: Sofia Papagiannaki <papagian@users.noreply.github.com>
* Move fitlering and deduplication to comnponent to enable future caching
* Clean up LogsMetaInfo
* Update
* Memoize component
* Fix type errors
* Clean uo
* Add tests for filtering in combination with deduplication
* Fix fialure when adding state annotations
* Fix get org rules API
Do not fail response if user has no access to view a namespace.
Do not include the namespace in the response instead.
* lint
* initial commit.
* Some more improvements to the expression data source support.
* added tests to verify that time range picker and data source picker only is visible when callbacks is passed to row.
* fixing issue with filter in alerting list.
* minor refactoring.
* removed guarding code, should be fixed in backend.
* cleaning the data query if we change to a different data source.
* WIP updating getColorForTheme
* Progress
* More fixes
* Updating more parts
* Fixing unit tests
* Fixing more tests
* Fixing storybook issues
* More refactoring
* Fixed test
* feat(iconbutton): introduce variant for red and blue icon buttons
* refactor(iconbutton): give variants breathing space in story
* docs(iconbutton): add docblock comment for variant prop
* refactor(iconbutton): prefer secondary to undefined variant prop and add default
* refactor(iconbutton): use icon color for hover
* chore: expose theme types / functions
* fix(grafana-ui): withTheme2 extends themeable2
* feat: migrate page components to use new theme
* refactor(pages): replace legacy form components with latest form components
* refactor(dashboardimport): update page component to use theme spacing
* refactor(alerting-ng): update page component to use v2 theme
* test(dashboardpage): update test for v2 theme
* test(apikeyspage): update test to select InlineSwitch component
* test(createteam): update snapshot
* refactor(playlist): update page components to use v2 theme
* refactor(page): put back classes on page-container and background colors
* HelpModal: Migrates to new style
* Alerting: Migrates how to do alerting modal to React
* ApiKeysModal: migrates to new theme
* Dashboard: View dasboard json modal migrated to React and new theme
* PluginPage: migrates update plugin modal to react and new theme
* Chore: deprecates events and functions
* Simplify help modal
* Updated json modal to use Modal.ButtonRow
* Tweak to api key design
* Tests: updates snapshot
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
In the case permissions has been added on dashboard(s). Later permissions for the
parent folder of the dashboard is edited in such a way that dashboard in that folder
has a permission that is a duplicate of an inherited one. This PR changes so that
duplicate permissions are now filtered out from /api/dashboards/id/<dashboard id>/permissions.
Duplicate permission are not filtered out if the permission on dashboard is higher
than on the inherited folder.
Fixes#33296
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* Tweaks to piechart and theme
* Adds unsubscribe to events and move out to separate hook
* reverted constrast change
* Minor refactor after review feedback
* chain the subs
* Encapsulate settings with a provider with support for runtime reloads
* SettingsProvider: reload is controlled by the services
* naive impl of reload handlers for settings
* working naive detection on new changes
* Trigger settings reload from API endpoint
* validation step added
* validation of settings
* Fix linting errors
* Replace DB_Varchar by DB_NVarchar
* Reduce settings columns (section, key) lenghts
* wip db update logic
* Db Settings: separate updates and removals
* Fix: removes incorrectly added code
* Minor code improvements
* Runtime settings: moved oss -> ee
* Remove no longer used setting.Cfg SAML-related fields
* Rename file setting/settings.go => setting/provider.go
* Apply suggestions from code review
Co-authored-by: Agnès Toulet <35176601+AgnesToulet@users.noreply.github.com>
* Minor code improvements on OSS settings provider
* Fix some login API tests
* Correct some GoDoc comments
* Apply suggestions from code review
Co-authored-by: Agnès Toulet <35176601+AgnesToulet@users.noreply.github.com>
Co-authored-by: Leonard Gram <leo@xlson.com>
Co-authored-by: Agnès Toulet <35176601+AgnesToulet@users.noreply.github.com>
* updates component to use the new theme model
* updates ssome old style to use new theme
* uses correct theme color property
* updates new theme style with correct naming
* Grafana-UI: Switch CodeEditor to @monao-editor/react
* update copy script and paths
* hide context menu
* use __grafana_public_path__
* Fix value and language not updating
* update jaeger tsconfig
* update tsconfig
Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
* update swagger json files match datasourceUid change
underlying change made in https://github.com/grafana/grafana/pull/33282
* Document DatasourceUID field in AlertQuery model
* Run spec generation from inside a docker container
* Generate latest spec
Co-authored-by: Sofia Papagiannaki <sofia@grafana.com>
* If POST, pass params as data not in url string
* Fix metricNameAndLabelsQuery
* Improve test for new functionality
* Add multiple parameters in test scenarios
* Change urlParams to object
* Wip
* Updates to colors to make secondary outline work
* refactor: prefer buttonStyle="text" over variant="link" for text buttons
* revert(button): put back mdx story page
* fix(button): variant link disabled as text disabled
* docs(button): remove link variant from stories
* feat(grafana-ui): introduce basic deprecation notice for button and linkbutton components
* docs(button): update usage of href with button and buttonlink
* feat(button): add grafana/ui to deprecation warning
* refactor(buttons): use a more descriptive name for prop warning function
* test(buttonrow): update snapshots
* refactor(buttons): change prop name from buttonStyle to fill
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
* Modals: Style update draft
* Modal.ButtonRow to control spacing better in a centralised way
* Remove header border if no tabs
* Added border and made buttons right aligned and changed order of buttons
* Updating the overlay
* Tweaks to paddings
* Updated share modals
* Elasticsearch: Add generic support for template variables
* format MovingAverage settings as numbers
* Move formatting logic to query builder & forma serial_diff settings as numbers
* modify presence check
* add todo
* minor fixes
* transform string values to numbers
* Move casting logic
* Slightly cleaner implementation
* Add BE tests
* Leverage elastic validation when string doesn't resolve to a numeric value
* move newly introduced test to testify
* add FE query_builder tests
* check error
* Parse values to float instead of int
* Fix tests & ParseFloat bit size
* Hoovering over a legend label hightlighs that pie slice
* Change to event bus
* Adds EventBusWithSource to help identify the origin of the event
* Add tests and fix bug with incorrect source
* Clean up PieChart and EventBus a bit
* Fix bug when payload.source is undefined
* Add some documentation and adjust naming
* useState instead of useSetState
* Clean up some more documentation
* Move eventbus to state
* add event bus actions to the debug panel
* add event bus actions to the debug panel
* Try to make the naming a bit clearer
* Try passing eventbus as context
* Fix lint issues
* Move event bus context to panel chrome
* Fix event handler functions
* switch to using useCallback for legend item callbacks
* Remove unused parameters
* Add id to panel fixture of PanelChrome test
* Simplify event source
* Place eventBus inside more generic context
* Push handling of context up the tree to VizLegend
only export usePanelContext and PanelContextProvider
implement isOwnEvent on EventBus
some cleanup
Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
* Move data alignment to panel
* Make uPlot plugins sync, bring back alignment to GraphNG
* Update GraphNG-like panels
* Update explore graph ng
* Cleanup unnecessary tests
Co-authored-by: Leon Sorokin <leeoniya@gmail.com>
* WIP: initial commit
* Fix: Fixed $timeout call when testing snapshots
* Chore: reverts changes to metrics_panel_ctrl.ts
* Chore: reverts changes to annotations_srv
* Refactor: adds DashboardQueryRunner.run to initdashboard
* Refactor: adds run to dashboard model start refresh
* Refactor: move to own folder and split up into smaller files
* Tests: adds tests for LegacyAnnotationQueryRunner
* Tests: adds tests for AnnotationsQueryRunner
* Tests: adds tests for SnapshotWorker
* Refactor: renames from canRun|run to canWork|work
* Tests: adds tests for AlertStatesWorker
* Tests: adds tests for AnnotationsWorker
* Refactor: renames operators
* Refactor: renames operators
* Tests: adds tests for DashboardQueryRunner
* Refactor: adds mergePanelAndDashboardData function
* Tests: fixes broken tests
* Chore: Fixes errors after merge with master
* Chore: Removes usage of AnnotationSrv from event_editor and initDashboard
* WIP: getting annotations and alerts working in graph (snapshot not working)
* Refactor: fixes snapshot data for React panels
* Refactor: Fixes so snapshots work for Graph
* Refactor: moves alert types to grafana-data
* Refactor: changes to some for readability
* Tests: skipping tests for now, needs rewrite
* Refactor: refactors out common static functions to utils
* Refactor: fixes resolving annotations from dataframes
* Refactor: removes getRunners/Workers functions
* Docs: fixes docs errors
* Docs: trying to fix doc error
* Refactor: changes after PR comments
* Refactor: hides everything behind a factory instead
* Refactor: adds cancellation between runs and explicitly
* set processing time
* merge labels and set on response
* use state cache for adding alerts to rules
* minor cleanup
* add support for NoData and Error results
* rename test
* bring in changes from other PRs tha have been merged
* pr feedback
* add integration test
* close state tracker cleanup on context.Done
* fixup test
* rename state tracker
* set EvaluationDuration on Result
* default labels set as constants
* separate cache and state from manager
* use RWMutex in cache
* set processing time
* merge labels and set on response
* use state cache for adding alerts to rules
* minor cleanup
* add support for NoData and Error results
* rename test
* bring in changes from other PRs tha have been merged
* pr feedback
* add integration test
* close state tracker cleanup on context.Done
* fixup test
* not those annotations
* Access control: Combine permissions through predefined roles
When certain permission is required for built-in role, instead of adding those permissions to the existing predefined roles, we need to have granular predefined roles with those permissions.
* Better copy...
* Adding and fixing tests
* Remove duplicated permission
* refactor(loginpage): migrate custom button styles to use Button component
* refactor(certificationkey): prefer grafana-ui form elements over html elements and classnames
* refactor(axisselector): prefer grafana-ui Button component over html button element
* refactor(input-datasource): replace use of btn class with grafana-ui components
* chore(grafana-ui): delete deprecated ToggleButtonGroup component
* refactor: replace btn and cta-form__close class usage with IconButton
* chore(closebutton): post master merge use v2 theme
* refactor(permissionlist): remove usage of .btn classname
* Wip
* docs(styling): update styling and theme docs import paths
* refactor(alerting): remote btn classnames from TestRuleResult
* refactor(apikeys): prefer grafana-ui Button components over btn classNames
* refactor(folders): prefer grafana-ui Button components over btn classNames
* refactor(teams): prefer grafana-ui Button components over btn classNames
* refactor(datasources): prefer grafana-ui Button components over btn classNames
* refactor: prefer grafana-ui Button components over btn classNames
* Minor style tweak to service buttons
* test: update snapshots related to button changes
* chore(input-datasource): remove unused import declaration
* refactor(loginservicebuttons): rename theme.palette to theme.colors
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
* AlertingNG: Fix TODOs in email notification channel
Signed-off-by: Ganesh Vernekar <ganeshvern@gmail.com>
* Test fixup
* Remove the receiver field it is not needed for the email notification
Co-authored-by: Josue Abreu <josue@grafana.com>
* Theme: Update theme layering
* More updates
* Updates to shadows and dropdowns
* Moved panel option group to emotion global styles
* more minor fixes
* [Alerting]: Add alerting endpoint for Query Evaluation
* Fix passing down now parameter
* Add validations and test
* Fix eval queries and expressions test
* Add eval tests
* Card: migrates styles from sass to emotion
* removed LayoutSelector component since it's not used in the codebase
* updates card styles with new color name
* [Alerting]: Fix updating rule group and add test
* Fix updating rule labels
* Set default values for rule no data and error states
if they are missing
* Add test for updating rule
* Test updating annotations
* Apply suggestions from code review
Co-authored-by: gotjosh <josue@grafana.com>
* add test for posting an unknown rule UID
* Fix alert rule validation and add tests
* Remove org id from PostableGrafanaRule
This field was not used; each rule gets the organisation of the user making
the rerquest
* Update pkg/tests/api/alerting/api_alertmanager_test.go
Co-authored-by: gotjosh <josue@grafana.com>
* fix viz
* add datasource picker on query rows in mixed mode
* add timerange, handle add/remove queryrunners
* multiqueryrunner test
* trying things out.
* adding another test to verify running a induvidual query runner will update multirunner.
* cleaned up tests a bit.
* draft version working ok.
* fixing so we base the refId from request targets.
* reenable adding expression
* layout fixes for alerting page
* some cleanup
* cleaning up code that we won't use
* changed so we don't display the time range if params not passed.
* remove unused things in querygroup
* changed button to type button.
* removed timerange from dataQuery and removed multiquery runner.
* minor refactoring.
* renamed callback function to make it more clear what it does.
* renamed droppable area.
* changed so we only display the query editor when selecting threshold.
* removed the refresh picker.
* revert
* wip
* extending with data query.
* timerange fixes
* it is now possible to add grafana queries.
* removed unused type.
* removed expect import.
* added docs.
* moved range converting methods to rangeUtil.
* clean up some typings, remove file
* making sure we don't blow up on component being unmounted.
Co-authored-by: Marcus Andersson <marcus.andersson@grafana.com>
* Made a public constructor in order to instantiate it from the service override
* Removed unused plugins.DataRequestHandler
* Added a Run and RunInitProvisioners methods that can be run from Enterprise
* Adding a mock for Run and RunInitProvisioners as well
* DashboardPanel: migrates styling from sass to emotion
* fixes frontend test
* removed the theme since it doesn't have any use case in the styles
* updates frontend snapshot test
A set of fixes for the GET alert and groups endpoints.
- First, is the fact that the default values where not being for the query params. I've introduced a new method in the Grafana context that allow us to do this.
- Second, is the fact that alerts were never being transitioned to active. To my surprise this is actually done by the inhibitor in the pipeline - if an alert is not muted, or inhibited then it's active.
- Third, I have added an integration test to cover for regressions.
Signed-off-by: Josue Abreu <josue@grafana.com>
* WIP: Add more info ro log line limit, remove redundant info
* Refactor
* Clean up
* Adjust tests
* Adjust spacing
* Add test for new functionality
* Update snapshot
* Change solution, simplify
* Remove redundant variables, makees it more clear
* Update public/app/core/logs_model.ts
Co-authored-by: Piotr Jamróz <pm.jamroz@gmail.com>
Co-authored-by: Piotr Jamróz <pm.jamroz@gmail.com>
* Performance: Standardize lodash imports to use destructured members
Changes lodash imports of the form `import x from 'lodash/x'` to
`import { x } from 'lodash'` to reduce bundle size.
* Remove unnecessary _ import from Graph component
* Enforce lodash import style
* Fix remaining lodash imports
* Remove Revive standalone linter - use it via golangci-lint
* Add revive settings to ignore lint errors for now
* Small fix
* Update to grabpl v0.5.53
* Remove errorCode and warningCode from config
Before these changes the request tracing was added for each route
registered using the routing.RouteRegister, see code. This had the
consequence that middleware executed earlier/later in the request
pipeline was not part of the request tracing middleware life-cycle
which measures the duration of requests among other things.
In the logger middleware we do extract the current distributed trace
identifier, if available, and set that on request info/error log messages.
With these changes we can extract the current distributed trace identifier,
if available, and set that on the contextual HTTP request logger
(models.ReqContext.Logger) which would improve the possibility to correlate
all HTTP request log messages with traces.
In addition, the request tracing middleware is now executed first and last in
the request pipeline and should therefore result in more accurate timing
measurements (request duration).
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* calculate schemaRevision in panel query runner
* schema > structureRev
* calculate revision after apply field overrides
* this.state
* don't apply field overrides if the shape is already the same
* check schema revision
* update snapshots
* feat(piechart): align styles between piechart and graph
* feat(piechart): introduce tooltip options to panel and visualisation
* feat(piechart): get tooltip options working
* feat(piechart): add SeriesTable to visx TooltipInPortal
* refactor(piechart): move getTooltipData out of PieSlice
* docs(piechart): fix storybook story errors
* feat(viztooltip): initial commit of common tooltip types and components
* refactor(viztooltip): rename type as enum and update usage
* refactor(viztooltip): move chart.tooltip into viztooltip and fix imports and typings
* refactor(viztooltip): update import paths and names where used
* docs(infotooltip): fix story import paths
* docs(piechart): fix typings in story
* docs(viztooltip): add public annotations to exported components and types
* init
* autogens AM route
* POST dashboards/db spec
* POST alert-notifications spec
* fix description
* re inits vendor, updates grafana to master
* go mod updates
* alerting routes
* renames to receivers
* prometheus endpoints
* align config endpoint with cortex, include templates
* Change grafana receiver type
* Update receivers.go
* rename struct to stop swagger thrashing
* add rules API
* index html
* standalone swagger ui html page
* Update README.md
* Expose GrafanaManagedAlert properties
* Some fixes
- /api/v1/rules/{Namespace} should return a map
- update ExtendedUpsertAlertDefinitionCommand properties
* am alerts routes
* rename prom swagger section for clarity, remove example endpoints
* Add missing json and yaml tags
* folder perms
* make folders POST again
* fix grafana receiver type
* rename fodler->namespace for perms
* make ruler json again
* PR fixes
* silences
* fix Ok -> Ack
* Add id to POST /api/v1/silences (#9)
Signed-off-by: Ganesh Vernekar <cs15btech11018@iith.ac.in>
* Add POST /api/v1/alerts (#10)
Signed-off-by: Ganesh Vernekar <cs15btech11018@iith.ac.in>
* fix silences
* Add testing endpoints
* removes grpc replace directives
* [wip] starts validation
* pkg cleanup
* go mod tidy
* ignores vendor dir
* Change response type for Cortex/Loki alerts
* receiver unmarshaling tests
* ability to split routes between AM & Grafana
* api marshaling & validation
* begins work on routing lib
* [hack] ignores embedded field in generation
* path specific datasource for alerting
* align endpoint names with cloud
* single route per Alerting config
* removes unused routing pkg
* regens spec
* adds datasource param to ruler/prom route paths
* Modifications for supporting migration
* Apply suggestions from code review
* hack for cleaning circular refs in swagger definition
* generates files
* minor fixes for prom endpoints
* decorate prom apis with required: true where applicable
* Revert "generates files"
This reverts commit ef7e975584.
* removes server autogen
* Update imported structs from ngalert
* Fix listing rules response
* Update github.com/prometheus/common dependency
* Update get silence response
* Update get silences response
* adds ruler validation & backend switching
* Fix GET /alertmanager/{DatasourceId}/config/api/v1/alerts response
* Distinct gettable and postable grafana receivers
* Remove permissions routes
* Latest JSON specs
* Fix testing routes
* inline yaml annotation on apirulenode
* yaml test & yamlv3 + comments
* Fix yaml annotations for embedded type
* Rename DatasourceId path parameter
* Implement Backend.String()
* backend zero value is a real backend
* exports DiscoveryBase
* Fix GO initialisms
* Silences: Use PostableSilence as the base struct for creating silences
* Use type alias instead of struct embedding
* More fixes to alertmanager silencing routes
* post and spec JSONs
* Split rule config to postable/gettable
* Fix empty POST /silences payload
Recreating the generated JSON specs fixes the issue
without further modifications
* better yaml unmarshaling for nested yaml docs in cortex-am configs
* regens spec
* re-adds config.receivers
* omitempty to align with prometheus API behavior
* Prefix routes with /api
* Update Alertmanager models
* Make adjustments to follow the Alertmanager API
* ruler: add for and annotations to grafana alert (#45)
* Modify testing API routes
* Fix grafana rule for field type
* Move PostableUserConfig validation to this library
* Fix PostableUserConfig YAML encoding/decoding
* Use common fields for grafana and lotex rules
* Add namespace id in GettableGrafanaRule
* Apply suggestions from code review
* fixup
* more changes
* Apply suggestions from code review
* aligns structure pre merge
* fix new imports & tests
* updates tooling readme
* goimports
* lint
* more linting!!
* revive lint
Co-authored-by: Sofia Papagiannaki <papagian@gmail.com>
Co-authored-by: Domas <domasx2@gmail.com>
Co-authored-by: Sofia Papagiannaki <papagian@users.noreply.github.com>
Co-authored-by: Ganesh Vernekar <15064823+codesome@users.noreply.github.com>
Co-authored-by: gotjosh <josue@grafana.com>
Co-authored-by: David Parrott <stomp.box.yo@gmail.com>
Co-authored-by: Kyle Brandt <kyle@grafana.com>
* Updated sentence format.
* Added new placeholder page for Enterprise License information, added links also adjusted weights.
* Created new folder license and moved 4 files to here.
* Added aliases.
* link fixes and such
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
* Fuzzy search prototype
* Aggregate filter and sorting functions for auto-complete suggestions
* Add a test for fuzzy search
* Simplify setting fuzzy search information
* Rename SimpleHighlighter
* Test PartialHighlighter
* Add PartialHighlighter snapshot
* Simplify PartialHighlighter
* Revert env change
* Clean up the code
* Add fuzzy search for labels
* Bring back backwards compatiblity
* Expose search function type only
* Update docs
* Covert snapshot test to assertions
* Fix docs
* Fix language provider test
* Add a test for autocomplete logic
* Clean up
* Mock Editor functions
* Add fuzzy search to Prometheus labels
* Add docs about backwards compatibility
* Simplify main fuzzy search loop
* outside react approach
* fixed ts issues and updated radio button
* css only solution
* Removed a bit
* Updated radio button design and fixed focus state on ToolbarButton
* Fixes
* Added missing fullWidth
* move state tracker tests to /tests
* set default labels on alerts
* handle empty labels in result.Instance
* create annotation on transition to alerting state
* Expose user permissions to the frontend
* Do not include empty scope
* Extend ContextSrv with hasPermission() method
* Add access control types
* Fix type error (make permissions optional)
* Fallback if access control disabled
* Move UserPermission to types
* Simplify hasPermission()
* GraphNG: Use new theme props
* Minor fix to letterspacing in button
* Minor tweaks
* Updated
* Revert to roboto
* Added concept of a dark or white base
* Style updates
* Sass
* Updated light text blue
* updates
* reverting button group design
* Fixed tests
* updates
* Updated tests
* Fallback to default data source in Explore and use uid for history
uid is used to allow changing the name of the datasource and preserve history
* Remove redundant console logs
* set query in rules response
* Theme: tweaking dark theme colors (#33007)
* Library Panels: Add library panel tab to share modal (#32953)
* Explore: Scroll split panes in Explore independently (#32978)
* Change default prometheus to latest and prometheus v1 to prometheus1
* Update README
* Remove prometheus1 block as not used
* Explore: Separatae scrolling in split view
* Update snapshot
* Allow skip migrations in tests via environment variable (#32958)
* Dashboard: Fix issue where Slack notifications won't link to users (#32861)
* DashboardPage: refactored styles from sass to emotion (#32955)
* DashboardPage: refactored styles from sass to emotion
* refactored dashboardPage component to be alot easier to read and understand
* more refactoring...
* more cleaning...
* fixes frontend test
* fixes frontend test- I hope
* fixes frontend test- I hope
* moves dashboard scss styles back to it's standalone file
* GraphNG: use theme font family and size for axis labels (#33009)
* GraphNG: use theme font family and size for axis labels
* fix test
* AlertingNG: Slack notification channel (#32675)
* AlertingNG: Slack notification channel
Signed-off-by: Ganesh Vernekar <ganeshvern@gmail.com>
* Add tests
Signed-off-by: Ganesh Vernekar <ganeshvern@gmail.com>
* Fix review comments
Signed-off-by: Ganesh Vernekar <ganeshvern@gmail.com>
* Fix review comments and small refactoring
Signed-off-by: Ganesh Vernekar <ganeshvern@gmail.com>
* GraphNG: stacking (#30749)
* First iteration
* Dev dash
* Re-use StackingMode type
* Fix ts and api issues
* Stacking work resurected
* Fix overrides
* Correct values in tooltip and updated test dashboard
* Update dev dashboard
* Apply correct bands for stacking
* Merge fix
* Update snapshot
* Revert go.sum
* Handle null values correctyl and make filleBelowTo and stacking mutual exclusive
* Snapshots update
* Graph->Time series stacking migration
* Review comments
* Indicate overrides in StandardEditorContext
* Change stacking UI editor, migrate stacking to object option
* Small refactor, fix for hiding series and dev dashboard
* VizLegend: sets a min and max value of the seriesCount control in Storybook (#33022)
* Alerting: Filter rules list (#32818)
* Chore: Reduces strict errors (#33012)
* Chore: reduces strict error in OptionPicker tests
* Chore: reduces strict errors in FormDropdownCtrl
* Chore: reduces has no initializer and is not definitely assigned in the constructor errors
* Chore: reduces has no initializer and is not definitely assigned in the constructor errors
* Chore: lowers strict count limit
* Tests: updates snapshots
* Tests: updates snapshots
* Chore: updates after PR comments
* Refactor: removes throw and changes signature for DashboardSrv.getCurrent
* [Alerting]: Several modifications in alert rules (#32983)
* [Alerting]: Use common properties for all rules
* Add Labels in rules
* Fix update ruleGroup API
Return 400 Bad Request response
when the request contains a UID that does not exist
* Check permissions and return namespace id
* Apply suggestions from code review
Co-authored-by: gotjosh <josue@grafana.com>
* WIP (#33025)
* Chore: Bump strict error count limit (#33035)
* set query in rules response
Co-authored-by: Torkel Ödegaard <torkel@grafana.org>
Co-authored-by: kay delaney <45561153+kaydelaney@users.noreply.github.com>
Co-authored-by: Ivana Huckova <30407135+ivanahuckova@users.noreply.github.com>
Co-authored-by: Dafydd <72009875+dafydd-t@users.noreply.github.com>
Co-authored-by: n-wbrown <n-wbrown@users.noreply.github.com>
Co-authored-by: Uchechukwu Obasi <obasiuche62@gmail.com>
Co-authored-by: Leon Sorokin <leeoniya@gmail.com>
Co-authored-by: Ganesh Vernekar <15064823+codesome@users.noreply.github.com>
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
Co-authored-by: Nathan Rodman <nathanrodman@gmail.com>
Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>
Co-authored-by: Sofia Papagiannaki <papagian@users.noreply.github.com>
Co-authored-by: gotjosh <josue@grafana.com>
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
* [Alerting]: Use common properties for all rules
* Add Labels in rules
* Fix update ruleGroup API
Return 400 Bad Request response
when the request contains a UID that does not exist
* Check permissions and return namespace id
* Apply suggestions from code review
Co-authored-by: gotjosh <josue@grafana.com>
* Chore: reduces strict error in OptionPicker tests
* Chore: reduces strict errors in FormDropdownCtrl
* Chore: reduces has no initializer and is not definitely assigned in the constructor errors
* Chore: reduces has no initializer and is not definitely assigned in the constructor errors
* Chore: lowers strict count limit
* Tests: updates snapshots
* Tests: updates snapshots
* Chore: updates after PR comments
* Refactor: removes throw and changes signature for DashboardSrv.getCurrent
* First iteration
* Dev dash
* Re-use StackingMode type
* Fix ts and api issues
* Stacking work resurected
* Fix overrides
* Correct values in tooltip and updated test dashboard
* Update dev dashboard
* Apply correct bands for stacking
* Merge fix
* Update snapshot
* Revert go.sum
* Handle null values correctyl and make filleBelowTo and stacking mutual exclusive
* Snapshots update
* Graph->Time series stacking migration
* Review comments
* Indicate overrides in StandardEditorContext
* Change stacking UI editor, migrate stacking to object option
* Small refactor, fix for hiding series and dev dashboard
* DashboardPage: refactored styles from sass to emotion
* refactored dashboardPage component to be alot easier to read and understand
* more refactoring...
* more cleaning...
* fixes frontend test
* fixes frontend test- I hope
* fixes frontend test- I hope
* moves dashboard scss styles back to it's standalone file
* Change default prometheus to latest and prometheus v1 to prometheus1
* Update README
* Remove prometheus1 block as not used
* Explore: Separatae scrolling in split view
* Update snapshot
* Testing inter font
* new fonts and global styles
* Added Typography component and storybook
* Moving more global legacy types to emotion global styles
* Updated snapshot
* mapp bold to 500
* Updates
* Fixes and moved html & body styles to emotion
* moved helper function down
* Updated snapshot
* More tweaks
* Updates
* added internal tag
* Updated snapshot
* OAuth: Add strict role mapping
By default the user is assigned the role Viewer if role_attribute_path
doesn't return a role, which is not always desirable. This commit adds a
strict mode, which deny the user access if a role isn't returned.
Fix#26626
* Update docs/sources/auth/generic-oauth.md
Co-authored-by: Emil Tullstedt <emil.tullstedt@grafana.com>
* Update docs/sources/auth/generic-oauth.md
* Update .gitignore file with WAN
* Removed WAN from .gitignore
Co-authored-by: Emil Tullstedt <emil.tullstedt@grafana.com>
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
Co-authored-by: achatterjee-grafana <aparajita.chatterjee@grafana.com>
* [Alerting]: Fix empty rules evaluation statuses
`GetRuleGroupAlertRules()` requires an non empty namespaceUID
* Include the namespace into the response
* Elasticsearch: Allow omitting field when metric supports inline script
* Add tests for MetricEditor to show a None option
* Add tests for useFields hook
* Alerting: allow elasticsearch metrics without field
* [Alerting]: Use title instead of slug for retrieving the namespace
* Apply suggestions from code review
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* Added support for custom user function for mapping custom noOptions messages
* Added new scenario in SegmentAsync.story.tsx
Co-authored-by: Hugo Häggmark <hugo.haggmark@gmail.com>
* Alerting: Use a default configuration and periodically poll for new ones
Use a default configuration to make sure we always start the grafana
instance. Then, regularly poll for new ones.
I've also made sure that failures to apply configuration do not stop the
Grafana server but instead keep polling until it is a success.
* Add error handling for unknown units
* Fix test cases
* Add case for empty string
* Changed tests from convey to testify
* Fix lints
* Move regex vars
* Add regex as ng-patterns on alert_tab.html
* Update public/app/features/alerting/partials/alert_tab.html
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
* Update public/app/features/alerting/partials/alert_tab.html
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
* Make zero and empty string not throw errors
* Updated validation error comments
* Frequency should allow zero or empty strings
* use checkFrequency instead of ng-pattern
checkFrequency is not triggered if ng-pattern is defined.
* Extract getForValue func - add tests
* Fix linting
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
* Theming: Updates to select styles and theme model progress
* Progress
* Update menu
* Updated menu group
* Improving button styles
* Added transitions to theme
* solving the hover & selected, focus issues
* Updated snapshot
* adding some colors from figma, but waiting to use them as not enough components use new layer colors
* Updates
* Updates
* Progress
* Renames
* Improvements to theme overview
* updated test
* demo update
* More new theme colors
* Wip new card styles
* Card tweaks hover is not working
* Updates more colors from figma
* Progress
* Progress
* Updated radio button styles
* Progress on new colors
* Progress
* New page toolbar and toolbar button design
* New toolbar button design
* Reverted to older toolbar and button look
* Updated snapshot
* Updated generated files
* Updated design
* Updates
* Added card hover
* Fixed button group
* Updates
* VizLegend: updates story from knobs to controls
* refactored story to be small and concise
* reverted stories to be WithValues and WithNoValues
* fixes the seriesCount control not having effects to the story by using the Effect hook
* Remove singlestat panel from the codebase
* Automatically migrate deprecated panels
* Migrate singlestat to stat when initializing panel
* Singlestat -> gauge detection
* Missing await
* Throw error when panel plugin not found and allow new panels to take names of the deprecated ones
* Make it pretty
Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
* Initial commit, list and edit page working
* Progress
* angular and standard editors work
* Unifying more between annotations list and links list
* Remove submenu visibilty stuff
* Update packages/grafana-data/src/types/annotations.ts
Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
* Review feedback
* fixed checkbox
* Fixes
* test(annotationsettings): initial commit of tests
* delete files brought back by master merge
* update datasourcepicker import path
* update emotion import
* test(linksettings): clean up tests
* Fixed test
* test(annotationssettings): add remaining tests
* docs(grafana-data): export namespace for docs build
* docs(grafana-ui): export ColorValueEditorProps for docs build
* docs(grafana-ui): add docs annotation for ColorValueEditorProps
Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>
* Adding a sentence to the index to point people towards the "activate license" page if they want to complete installation of their Grafana Enterprise installation. Also made a minor change to the two sentences before to make them more consistent.
* Made Ursula's copy changes.
* Apply suggestions from code review
Fixed relref and made copy change suggested by Jita.
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
Co-authored-by: Piotr Jamróz <pm.jamroz@gmail.com>
* add db columns
* Fix deserialisation issue of AlertRule For field (#32848)
* Update to latest alerting-api
Co-authored-by: Sofia Papagiannaki <papagian@users.noreply.github.com>
* Update time-range-controls.md
Adding more examples of relative time instructions, it could hep to newbie people to understand it.
* Apply suggestions from code review
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
* moving expressions to components
* move expression type change to util
* rename gel to expressions
* add clasic condition component
* fix types
* incremental checkin
* button styling
* add range inputs
* some logic fixes and layout
* fix remove condition
* hide input if has no value
* typing fix
* Add special check for generic oauth case
* Converted from Convey to testify
* Fix according to reviewer's comments
* More changes according to reviewer's comments
* Handle error if user is not found
* Move generic oauth test from user_test.go to user_auth_test.go
* Update pkg/services/sqlstore/user_auth_test.go
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
* Created genericOAuthModule const
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
* Alerting: Cleanup and move legacy to a legacy file
A quick cleanup of the ngalert/api directory, optimising for an easy
removal of what is will be considered legacy at some point. A quick
summary of what's done is:
- Add a prefix `generated` prefix to files that are auto-generated by
our swagger definitions.
- Create a legacy file to place all the legacy API routes implementation
and helpers. Deleting files that where no longer needed after this
move.
- Rename the `lotex` file to `lotex_ruler`
- Adding a couple of comments here and there.
With this, I hope to organise our code in this directory a bit better
given there's a lot going on.
* Ensure window origin to be stripped from url when using absolute urls
* Update test
* Make sure link interception works for external links
* Apply suggestions from code review
* Review
* add custom HealthCheckError
* allow details from HealthCheckResult to be passed in the error
* pass in details.message from testing status into Alert component
* add chance
* add aria label to read only message
* update tests and add error message tests
* extract HealthCheckResultDetails type out and add comment
* extract TestingStatus interface out
* remove chance from test
* remove chance
* WIP button styles refactoring
* Starting to work
* Tweak form disabled color
* Emotion performance tests
* More benchmarks
* added classnames prop
* Button class names refactor test
* revert to old style generation
* Wrapping up
* Updates
* Updated tests
* Updated
* Progress
* Progress
* Added spacings
* Updated rich color to be more descriptibe
* Added more to getRichColor to showcase how it would work
* Added more to getRichColor to showcase how it would work
* Updated
* Started on storybook
* Rename to palette
* Storybook progress
* Minor update
* Progress
* Progress
* removed unused import
* Updated
* Progress
* Added typography to new theme model
* Added shadows and zindex to new theme
* Updated based on last discussions
* Updated
* Rename shadows
* Moving storybook to new theme, renaming stories and moving to single category
* Updated snapshot
* Updated jsdoc state tags
* Reducing annonying errors
* Table: Fixes table data links so they refer to correct row after sorting
* Tests: adds some basic tests incl sorting
* Refactor: removes dependeny on app
Co-authored-by: Hugo Häggmark <hugo.haggmark@gmail.com>
* Move db package WIP
* Implement OSS access control
* Register OSS access control
* Fix linter error in tests
* Fix linter error in evaluator
* Simplify OSS tests
* Optimize builtin roles
* Chore: add comments to the exported functions
* Remove init from ossaccesscontrol package (moved to ext)
* Add access control as a dependency for http server
* Modify middleware to receive fallback function
* Middleware: refactor fallback function call
* Move unused models to enterprise
* Simplify AccessControl type
* Chore: use bool IsDisabled() method instead of CanBeDisabled interface
* Elasticsearch: Fix bucket script variable duplication
* Generate names based on previous value & fix list key
* Fix typos
Co-authored-by: Piotr Jamróz <pm.jamroz@gmail.com>
Co-authored-by: Piotr Jamróz <pm.jamroz@gmail.com>
* Add Explore in azure portal functionality to Grafana AM data sources for Metrics
* fix url
* fix build
* Fix the URL with metric and aggregation
* user new version of metric blade
* use lookup object instead of enum for converting aggregation type
Co-authored-by: joshhunt <josh@trtr.co>
* Return cached alerts for prometheus/api/v1/alerts
* Return not implemented for /prometheus/grafana/api/v1/rules
* Set StartsAt for already alerting states
* Fix tests
* throttle when FPS is low
* fix throttling
* grafanaStreamingPerfBudget
* grafanaStreamingPerfBudget
* change global strategy
* also throttle frontend
Co-authored-by: Leon Sorokin <leeoniya@gmail.com>
* Configure the Jaeger data source with provisioning
We should have a good instruction and example for configuring the Jaeger data source with provisioning. It was hard to find how to add the tarce-to-logs, so I made one.
* Update docs/sources/datasources/jaeger.md
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
* Initial commit for state tracking
* basic state transition logic and tests
* constructor. test and interface fixup
* use new sig for sch.definitionRoutine()
* test fixup
* make the linter happy
* more minor linting cleanup
* Alerting: Send alerts from state tracker to notifier
* Add evaluation time and test
Add evaluation time and test
* Add cleanup routine and logging
* Pull in compact.go and reconcile differences
* Save alert transitions and save all state on shutdown
* pr feedback
* WIP
* WIP
* Persist alerts on evaluation and shutdown. Warm cache on startup
* Filter non-firing alerts before sending to notifier
Co-authored-by: Josue Abreu <josue@grafana.com>
server side expressions "Expressions" unfortunately do not work with dashboard variables (in the same way alerting does not).
The execution path is always through the backend/server of data sources, which currently don't support expanding dashboard variables.
* Elasticsearch: Disable Alias field for non-timeseries queries
* Update public/app/plugins/datasource/elasticsearch/components/QueryEditor/index.test.tsx
* SSE: fix reduce to handle non-null
* add type for data.Field that is float64 or *float64
* resample fix for non-null input case, add couple non-null tests
* FrontendMetrics: Adds new backend api that frontend can use to push frontend measurements and counters to prometheus
* FrontendMetrics: Adds new backend api that frontend can use to push frontend measurements and counters to prometheus
* Fix naming
* change to histogram
* Fixed go lint
* fix(userslist): introduce pagination to prevent browser crash with large number of users
* test(userlist): fix failing tests
* refactor(userlist): use layout components for spacing
* test(userslist): update snapshots
* TimeSrv: Refactor service to have no dependency on angular
* Fixing reference to function that does not exist
* fixing tests
* Worked around the strange error
* Add validation for grafana recipient
* Alertmanager API implementation (WIP)
* Fix encoding/decoding receiver settings from/to YAML
* Save templates together with the configuration
* update POST to apply latest config
* Alertmanager service enabled by the ngalert toggle
* Silence API integration with Alertmanager
* Apply suggestions from code review
Co-authored-by: gotjosh <josue@grafana.com>
Co-authored-by: Ganesh Vernekar <15064823+codesome@users.noreply.github.com>
* add default arc and don't display stats background without any stats
* Add node graph transform
* Use coloring scheme for the node graph
* Fix type
* Add tests
* Fix and update test
* Fix strict ts errors
* Fix ref handling
* Update test data to connect spans to a parent
* Babel: Updates babel dependencies to latest version
* Fixed problem introduced by babel where calling super with prefedefined this is not supported
* fixing test
* Fixed tests
* Improve fix for QueryCtrl
* Fixed more tests
* Updated tests
* Fix Cannot read property 'length' of undefined in Influx
* Update public/app/plugins/datasource/influxdb/response_parser.ts
Co-authored-by: Piotr Jamróz <pm.jamroz@gmail.com>
* Update public/app/plugins/datasource/influxdb/response_parser.ts
* Revert to original solution
Co-authored-by: Piotr Jamróz <pm.jamroz@gmail.com>
* Alerting: Introduce the silencing interface
The operations introduced are:
- Listing silences
- Retrieving an specific silence
- Deleting a silence
- Creating a silence
Signed-off-by: Josue Abreu <josue@grafana.com>
* Add a comment to listing silences
* Update to upstream alertmanager
* Remove copied code from the Alertmanager
* Initial commit for state tracking
* basic state transition logic and tests
* constructor. test and interface fixup
* use new sig for sch.definitionRoutine()
* test fixup
* make the linter happy
* more minor linting cleanup
* Alerting: Send alerts from state tracker to notifier
* Add evaluation time and test
Add evaluation time and test
* Add cleanup routine and logging
* Pull in compact.go and reconcile differences
* pr feedback
* pr feedback
Pull in compact.go and reconcile differences
Co-authored-by: Josue Abreu <josue@grafana.com>
* wip: consume aws-sdk config in auth http settings
* fix typings
* use sdk regions
* use latest version of grafana/aws-sdk
* use newest sdk
* add comment
* bump sdk
* fix yarn lock file
* fix storybook issue
* upgrade aws-sdk. also use it in grafana ui
* remove not used config
* add aws-sdk as an external dep for grafana in the grafana ui rollup
Co-authored-by: Will Browne <will.browne@grafana.com>
For security reasons, log any SQL connection error
details rather than returning it to the client.
Fixes#26623Fixes#22000
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
I believe it's a mistake in the docs, since http requests against those endpoints are not supposed to be authenticated with API keys.
If I correctly understand Grafana's auth design, the API key is not issued/tied to a user, therefore there is no mechanism to detect who the user is when the request is authenticated with an API key.
Please note there may be other endpoints like this...
* ReleaseNotes: Updated changelog and release notes for 7.5.1
* added link to realease notes.
Co-authored-by: Marcus Andersson <marcus.andersson@grafana.com>
* Fix parsing and displaying Graphite function descriptions
* Update docs
* Add support for inf value
* Remove redundant console.log
Co-authored-by: Zoltán Bedi <zoltan.bedi@gmail.com>
* Remove empty line
Co-authored-by: Zoltán Bedi <zoltan.bedi@gmail.com>
* Render new email template and fix the title
Signed-off-by: Ganesh Vernekar <ganeshvern@gmail.com>
* Fix nit
Signed-off-by: Ganesh Vernekar <ganeshvern@gmail.com>
* chore(dashboardsettings): introduce deep-diff for diffing dashboard models
* feat(dashboardsettings): initial commit of diff comparision react migration
* feat(dashboardsettings): wip - use json-source-map and monaco editor
* chore(deps): add react-diff-viewer to package.json
* feat(dashboardsettings): take the simplistic road for diff view
* refactor(dashboardsettings): clean up Version Settings components
* chore: delete angular historyListCtrl code
* refactor(dashboardsettings): styling fixes
* Small color tweaks
* refactor(versionhistory): fix issues around summary text. write tests
* test(versionhistory): add test for jsonDiff
* refactor(versionhistory): cleanup utils and reduce dom elements
* test(versionsettings): add tests for comparision view
* test(versionsettings): finialise tests for version history comparison view
* test(versionsettings): remove debug
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
* Initial commit
* Progress
* Update
* Progress
* updates
* Minor fix
* fixed ts issue
* fixed e2e tests
* More explorations
* Making progress
* Panel options and field options unified
* With nested categories
* Starting to find something
* fix paddings
* Progress
* Breakthrough ux layout
* Progress
* Updates
* New way of composing options with search
* added regex search
* Refactoring to react note tree
* Show overrides
* Adding overrides radio button support
* Added popular view
* Separate stat/gauge/bargauge options into value options and display options
* Initial work on getting library panels into viz picker flow
* Fixed issues switching to panel library panel
* Move search input put of LibraryPanelsView
* Changing design again to have content inside boxes
* Style updates
* Refactoring to fix scroll issue
* Option category naming
* Fixed FilterInput issue
* Updated snapshots
* Fix padding
* Updated viz picker design
* Unify library panel an viz picker card
* Updated card with delete action
* Major refactoring back to an object model instead of searching and filtering react node tree
* More refactoring
* Show option category in label when searching
* Nice logic for categories rendering when searching or when only child
* Make getSuggestions more lazy for DataLinksEditor
* Add missing repeat options and handle conditional options
* Prepping options category to be more flexibly and control state from outside
* Added option count to search result
* Minor style tweak
* Added button to close viz picker
* Rewrote overrides to enable searching overrides
* New search engine and tests
* Searching overrides works
* Hide radio buttons while searching
* Added angular options back
* Added memoize for all options so they are not rebuilt for every search key stroke
* Added back support for category counters
* Started unit test work
* Refactoring and base popular options list
* Initial update to e2e test, more coming to add e2e test for search features
* Minor fix
* Review updates
* Fixing category open states
* Unit test progress
* Do not show visualization list mode radio button if library panels is not enabled
* Use boolean
* More unit tests
* Increase library panels per page count and give search focus when switching list mode
* field config change test and search test
* Feedback updates
* Minor tweaks
* Minor refactorings
* More minimal override collapse state
* Initial commit for state tracking
* basic state transition logic and tests
* constructor. test and interface fixup
* use new sig for sch.definitionRoutine()
* test fixup
* make the linter happy
* more minor linting cleanup
* Alerting: Opsgenie send tags as extra properties
Allow users to select where to send notification tags when alerting via
OpsGenie. Supports sending tags as key/value details, concatenated
strings in tags or both.
Users will be able to see their tags as key/values under extra
properties in an alert on the Opsgenie UI. These key/values can
then be used in the platform for routing, templating etc.
* Configurable delivery to either tags, extra properties or both
* Default to current behaviour (tags only)
* Support both so users can transition from tags to details
Add docs and clean up references
* Alerting: Add additional arg for Opsgenie tests
The NewEvalContext function now requires a 'PluginRequestValidator' argument.
As our test does not use the validator we can specify 'nil' to satisfy the
function and allow our test to pass as expected.
* Alerting: Opsgenie doc fixes
Accept suggested changes for Opsgenie docs
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
* Alerting: Opsgenie provisioning settings docs
Add the new setting to the provisioning docs
* Alerting: Opsgenie doc typo correction
Move the comma (,) out of the preformatting tags for the setting value
* Alerting: Opsgenie refactor send switches
Refactor the send switches to be methods on the OpsgenieNotiefier
itself. This also cleans up the method names so that the code reads
a bit more logically as:
if we should send details: send details
if we should send tags: send tags
This avoids the calling code needing to care about passing the state
and allows an engineer working in the `createAlert` function to focus
on the results of applying the logic instead.
* Alerting: Opsgenie docs rename note
Rename the note heading to match the number to more clearly link them.
* Alerting: Opsgenie use standard reference to note
Refer to the note below as per recommendation and standards.
Fixes#30331
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
* AzureMonitor: display errors from requests for the dropdowns
* switch to array of errors, using just the last one
* unify error object
* move files into utils
* TESTS
* fix tests
This pull request migrates testdata to coreplugin streaming capabilities,
this is mostly a working concept of streaming plugins at the moment,
the work will continue in the following pull requests.
- Add the ability to stick metadata attached to a value in expressions. Currently uses Frame.Meta.Custom.
- None of this is consumed by anything yet, so an incremental step.
- Takes the conditions property from the settings column of an alert from alerts table and turns into an ng alerting condition with the queries and classic condition.
- Has temp API rest endpoint that will take the dashboard conditions json, translate it to SEE queries + classic condition, and execute it (only enabled in dev mode).
- Changes expressions to catch query responses with a non-nil error property
- Adds two new states for an NG instance result (NoData, Error) and updates evaluation to match those states
- Changes the AsDataFrame (for frontend) from Bool to string to represent additional states
- Fix bug in condition model to accept first Operator as empty string.
- In ngalert, adds GetQueryDataRequest, which was part of execute and is still called from there. But this allows me to get the Expression request from a condition to make the "pipeline" can be built.
- Update AsDataFrame for evalresult to be row based so it displays a little better for now
* first pass
* add instance manager
* fix tests
* remove dead code
* unexport fields
* cleanup
* remove ds instance from executor
* cleanup
* inline im
* remove old func
* get error working
* unexport field
* let fe do its magic
* fix channel name
* revert some tsdb changes
* fix annotations
* cleanup
* ButtonStory: updates story from knobs to controls
* removed type in story
* changed to a much descriptive variable name
* adds type back to the story
* Return dataframe directly from the backend
* Streamline some transforms
* Fix lint issues
* Remove unused lib
* Fix datasource test
* Fix imports and add some typings
* Fix the typings and some tests
* Add private doc comment
* Remove private tag
* Add comments
* Fix some API docs issues
* Fix: Allow <Select /> value to be unset
* clean up
* fix null object in select onChange
* Revert "fix null object in select onChange"
This reverts commit 4b157073884938e5e6a1fac1bbafa7c6017cb361.
* undo onChange arg type change
* fix tests
* Alerting: Add database table for persisting alerting configuration
* Fix the linter
* Address review comments
* Don't split templates and configuration
It is already bundled together as part of a of the API so might as well
marshall it directly.
* Move InspectSubtitle to grafana/ui
* Move inspect elements to features/inspector
* Move InspectJSON and use it also in Explore
* Move and use QueryInspector
* Move all to features/inspector
* WIP Data tab implementation
* Process dataframes for explores inspector
* Clean up
* Update test
* Clean up
* Fix Explore Inspector button name
* Fix LoginService.UpsertUser user creation
* Fix API AdminCreateUser user creation
* Add missing underscore import
* Fix API CompleteInvite user creation
* Fix API SignUpStep2 user creation
* SQLStore: Close session in withDbSession
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
* SQLStore.WithDbSession: Never use session from context
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
* WIP: Started work on a new panel chrome component
* Minor progress
* Next icons & state
* adding support for leftItems.
* fixing duplicated exports of PanelChrome.
* adding examples on loading indicator in storybook.
* adding API stability docs.
* removed dependency on stylesFactory.
* fixed docs errors.
Co-authored-by: Marcus Andersson <marcus.andersson@grafana.com>
* SSE/InfluxDB: Change InfluxQL to work with server side expressions
updates the request to handle EpochMS as the time range (which is what expressions sends)
and the response to use millisecond timestamps instead of seconds.
fixes#31604
similar to https://github.com/grafana/grafana/pull/31455
* ContextMenu: changed menu item rendering to render prop pattern to enable manual composition of menu items
* fixes affected components
* fixes small nits
* added some changes
* used a more descriptive variable name
* LibraryPanels: Improves Get All Api
* Refactor: using useReducer instead of useState
* Refactor: adds Pagination to UI
* Tests: adds reducer tests
* Refactor: using Observable instead to avoid flickering
* Refactor: moves exclusion to backend instead
* Chore: changing back the perPage default value
* Add mention of preferredVisualisationType to get Log Panel to display
The instructions don't work right now. As described, it was necessary for me to set the preferredVisualisationType to 'logs' to get the log view in Explore. I spent several hours digging around the code to figure this out, so hopefully we can save others the time with this doc update.
* Update docs/sources/developers/plugins/build-a-logs-data-source-plugin.md
Co-authored-by: Andrej Ocenas <mr.ocenas@gmail.com>
* Update docs/sources/developers/plugins/build-a-logs-data-source-plugin.md
Co-authored-by: Andrej Ocenas <mr.ocenas@gmail.com>
* Update docs/sources/developers/plugins/build-a-logs-data-source-plugin.md
Co-authored-by: Andrej Ocenas <mr.ocenas@gmail.com>
Co-authored-by: Andrej Ocenas <mr.ocenas@gmail.com>
* moved the datasource picker to grafana-runtime.
* fixed imports.
* added e2e selectors as an external package.
* adding react as external package.
* exposing dependent types for DataSourcePicker.
* added docs for ui components.
* moving component to components.
* Pass typed event thorough the DashNav button onClick handler
Event.stopPropagation() method needs to be called in some cases. This change addresses typescript error Type '(event: ...) => void' is not assignable to type '() => void'.
* Pass typed event thorough the DashNav button onClick handler
* Import MouseEvent from React
* Convert Prometheus query response to dataframes
* Add parseResponse tests
* Fixed lint imports
* Force use UTC as timezone in timeVector
* Updated test to check timezone
* TimePicker: Fixes hidden time picker shown in kiosk TV mode
* Use kioskmode passed via props
* Update snaps
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
Fix encoded characters in URL path should be proxied as encoded in the data proxy.
Fixes#26870Fixes#31438
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* Chore: Collect elasticsearch version usage stats
* Fix lint error
* use GetDataSources from sqlstore
* Apply review suggestions
* Return error if datasource type is not specified
* Update pkg/services/sqlstore/datasource.go
* fix undefined var
* changed so we use fetch.
* moved tests to be at the same level as the datasource.
* fixing tests after migrating to fetch.
* removed unused dep.
* refactorings according to feedback.
* adding missing typing.
* Add revoked_at field to user auth token to allow soft revokes
* Allow soft token revocations
* Update token revocations and tests
* Return error info on revokedTokenErr
* Override session cookie only when no revokedErr nor API request
* Display modal on revoked token error
* Feedback: Refactor TokenRevokedModal to FC
* Add GetUserRevokedTokens into UserTokenService
* Backendsrv: adds tests and refactors soft token path
* Apply feedback
* Write redirect cookie on token revoked error
* Update TokenRevokedModal style
* Return meaningful error info
* Some UI changes
* Update backend_srv tests
* Minor style fix on backend_srv tests
* Replace deprecated method usage to publish events
* Fix backend_srv tests
* Apply suggestions from code review
Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
Co-authored-by: Hugo Häggmark <hugo.haggmark@gmail.com>
* Apply suggestions from code review
* Apply suggestions from code review
Co-authored-by: Hugo Häggmark <hugo.haggmark@gmail.com>
* Minor style fix after PR suggestion commit
* Apply suggestions from code review
Co-authored-by: Ursula Kallio <73951760+osg-grafana@users.noreply.github.com>
* Prettier fixes
Co-authored-by: Hugo Häggmark <hugo.haggmark@gmail.com>
Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
Co-authored-by: Ursula Kallio <73951760+osg-grafana@users.noreply.github.com>
* Return empty list of tags when tags are not available
In some configurations graphite-web fail to return the list of tags. It shouldn't however prevent displaying list of metrics (which is concatenated with tags).
* Populate jsonData with default version of Graphite
The version of Graphite is preselected in the dropdown but was not saved in jsonData initially.
* Fix a typo
* Show a popup with an error message
* Always use the latest Graphite value as the default one when creating a datasource
* Move autocomplete error handling to GraphiteQueryCtrl
* Test error handing in Graphite autocomplete
* Test default Graphite version fallback
* Rename graphite_versions.ts to versions.ts
* Remove redundant import
* Code formatting, minor renaming
* Remove redundant error info
* influxdb: switch the raw influxql editor from angular to react
* influxdb: raw-influxql: better callback-naming
* influxdb: raw-influxql: use custom hook
* influxdb: flux: raw-editor: add unit tests
* refactor to purecomponent
* use subscription in component
* correct onRunQueries
* move more things from render function
* fix issue with no queries
* pr feedback
* revert to FC
* redo some code layout, simplify if
* minor fixes after review
* Bug: Update `react-use-measure` dependency to fix docker-build-full failure
* Add #remove-cjs-export to point to the correct branch
* Add git package - update js-builder version
* ValueMapping: Updated tests (#31877)
Checks if value 0 or '0' is considered as a numeric value
* ValueMapping: Changed implementation of isNumeric (#31877)
isNumeric now works with the 0 value
* fixed prettier issue
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
* AlertingNG: base API implementation
* Pass the interface instead of the base impl
* Ruler mock draft (WIP)
* Update alerting-api dependency
* Improve mock implementation
* update searchableOptions when this.props.options has been updated
* add tests for using state to update options for cascader component
* update story for cascader
* use memoizeOne
* Menu: refactor MenuItem and MenuGroup to be standalone component
* fixes small nits
* Chore: Refactored other components to correspond with the new Menu system (#31676)
* fixes affected components using Menu
* fixes affected components using Menu components
* fixes frontend test- I hope
* fixes frontend docs test- I hope
* fixes frontend docs test- I hope
* fixes frontend docs test- I hope
* fixes frontend docs test- I hope
* fixes frontend docs test- I hope
* added support for accessibility
* fixes frontend test- I hope
* Improve storybook story and simplify ButtonSelect
* Fixed broken graph context menu
* fixes frontend test- I hope
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
* AzureMonitor: Remove anys from datasource to get the inferred type
* AzureMonitor: Cast some datasource types
TODO: we want proper types for these
* AzureMonitor: Initial react Metrics editor components
* start dimension fields
* replace replaceTemplateVariable with datasource.replace, and rename onQueryChange to onChange
* actually just do template variable replacement in the datasource
* don't use azureMonitorIsConfigured
* Refactors, mainly around the metric metadata
- Convert all the metric metadata options for the Select before its set into state
- Stop using SelectableValue because it's basically any when all the properties are optional
- the onChange function passed to the fields now just accepts the direct value, rather than wrapped in a SelectableValue
* added proper fields, and adding and removing for DimensionFields
* Update query with Dimension changes
* Width
* subscription and query type fields
* Should be feature complete now, more or less
* fix missing import
* fix lint issues
* set default subscription ID
* Starting to write some tests
* tests for query editor
* Remove subscription ID from the label in Metrics
But we keep it there for the angular stuff
* MetricsQueryEditor tests
* Update index.test.tsx
* fix tests
* add template variables to dropdowns
* clean up
* update tests
* Reorganise react components
* Group query fields into rows
* Rename Option type, add Azure response type
* Refactor Metrics metric metadata
- Types the Azure API
- Moves default metadata values into datasource
* nit
* update test
* Update scripts and Dockerfiles to use Go 1.16.1
* Update build-container image version to 1.4.1
* Update node version to 14.16.0-1nodesource1
* Updated drone configuration
* Remove default value for multiSelect
* Add data links support for PieChart v2
* Temporarily fix story
* Refactor PieSlice, deduplicate colors
* Add field config to context menu of pie chart
* Add custom key to legend
This is a bit hacky. When there are multiple DisplayValues with the same
title the react keys collide and LegendListItems are not cleared
correctly.
* Forgot to add the interface
* Fix missing tooltip in edit mode
* Add router packages
* Get react app root work instead of Angular one
* Logger util
* Patch Angular routing ($routeProvider, $routeParamsProvider)
* Use react-router-dom history instead of separate dependency
* Add test routes
* Sidemenu - use Link instead of anchors
* Patch Angular $location service (stub)
* WIP: geting rid of $location provider from TimeSrv
* Intercept anchor clicks to use history under the hood
* Sync Redux location slice with history state
* Make login/logout work
* Debug routes for testing
* Make force login work
* Make sure query param change does not recreate page components
* Hide side menu in specified locations
* Make the dashboar route query parameters work, make panel edit menu work
* Enable more routes
* Fix side menu
* Handle view modes
* Disable playlist routes
* Make SafeDynamicImport work again
* Bring back router-debug
* Separate redux location sync from route rendering
* Refactor updateLocation to thunk and move force refresh(login) to it
* Fixing init dashboard issue
* Support switching between dashboards without an unmount of DashboardPage
* More fixes for init dashboard and panel edit
* More type fixes
* Moving angular location wrapper out of main LocationService, and fixing typescript issues
* Fixed last typescript errors
* LocationService: Move to runtime and remove getLocationService and export singleston const instead (#31523)
* Moving location service implementation to runtime and removing get function and making it a package const singleton
* Added test that used locationService directly
* removed unused import
* AngularApp: Moving angular dependencies and the app boot out of the main app into it's own file (#31525)
* Fixes angular panels by calling the monkey patch
* Moving angular stuff to to it's own files
* udpated
* Fixing clicking on divs and spans inside anchor
* Moving app notifications out of angular app and removing angular directive wrapper
* Moving search from angular to react and removing angular search wrapper
* Clean up, tried to remove the redux location wrapper but requires a big update for DashboardPage, so adding it back
* Moving AppWrapper to root to limit circular dependencies (app/core -> app/routing and back)
* Open and close search now works
* Hide sidemenu when in kiosk mode
* Restoring some keybindings like ESC key
* Removed kiosk events and simplified it, just handled through updating URL
* Fixing typescript errors
* Simplified GrafanaRouteComponentProps and renamed to ContainerProps
* renamed back
* Changed AlertRuleList to use GrafanaRouteComponentProps and location.search passed to it
* Removing the reloadOnSearch property, this is not needed now for react as react by default does not unmount components when only url match or query parmas change
* SafeDynamicImport causing unmount un every search update, not sure how to fix yet
* Fix signature for SafeDynamicImport so we do not create new route components on every route render
* Removing the redux location wrapper as it was causing errors, and making dashboard page work with RouteProps (location, match) etc
* Updating DashboardPage and SoloPanelPage to use match params and history location
* Fixed DashboardPage tests
* Fixing solo route tests
* LocationService: Rename getCurrentLocation to just getLocation
* do not intercept link clicks with target blank or self
* Experimental useUrlParams hook
* Update DataSourceSettingsPage to use router match params
* fix links with urls that have no starting / to work like before
* Fix forceLogin
* Add queryParams to GrafanaRouteComponentProps
* PanelEditor get rid of updateLocation and location state
* Improve grafana route query params typing
* Add getSearchObject to LocationService
* Use DashboardPAge queryParams instead of location.search parsing
* Fix DashboardPage typing
* Fix some tests weirdness
* Bring back KeyboardSrv
* Fixes typescript issues
* Team pages now use router match params
* Get rid of from GrafanaRouteComponent props
* Removed unnessary calls to getSearchObject when calling locationService.partial
* Updated DashboardPage tests after queryParams was added
* Fixing dashboard settings back
* GrafanaRoute: Adding tests and remove use of global locationService
* Fixing tests and typescript errors
* Bring back kiosk modes and add tests
* Fix TimeSrv tests
* Fix typecheck errors
* Fixing tests
* Updated SideMenu test to react-testing and wrapped component in Router, and fixed issue importing createMemoryHistory
* Get rid of routeChange event from TimeSrv from
* Fixed TopSectionItem test
* Trying to make basename work but failing
* Update TopSectionItem snapshot
* Fix TopSectionItem snapshot test
* Fix API keys creation
* Remove Angular dependencies from KeybindingSrv (#31617)
* Remove Angular dependency from KeybindingsSrv
* Fix tests and typecheck issues
* basename is starting to work
* Make dashboard save work
* KeybindingSrv: Remove as angular service and no usage angular scope
* So long bridge_srv, we won't miss you
* Update snapshots
* Dashboard: Refactoring ChangeTracker to use History api and no angular (#31653)
* Dashboard: Refactoring ChangeTracker to use History api and no angular
* Updated
* Removed logging
* fixed unit tests
* updated snapshots
* Mechanism for force reloading routes (#31683)
* e2e: Fixes various things in e2e scenarios after router migration (#31685)
* Explore: Update reading query params from router props and updating location via locationService (ReactRouter) (#31688)
* RoutingNG: Initial explore redux location to router location migration
* Updated explore Wrapper tests
* Fixing more tests
* remove loggin
* rename back to make naming consistent
* Fixing return to dashboard button
* fixing navigation to explore from dashboard
* updated routeProps
* Updated tests
* Make DashboardListPage work
* Fixing navigation after add new data source, and fixes explore e2e
* Fixing solo panel page
* PluginsPage now works
* RoutingNG: When parsing and rendering url search/query params preseve old logic of handling booleans and arrays (#31725)
* RoutingNG: When parsing and rendering url search/query params preserve old logic of handling booleans and arrays
* Fixed test
* Make snapshots list work
* fixed alert notification channel edit page
* Simplify LocationService, did not need special handling for login or forceLogin as target _self on link already handles that
* fixed UserAdminPage
* fixed edit orgs page
* Fixing LdapPage
* fixing dashboard import
* Fixed new folder page
* Fixed data source dashboards page
* fixing Folder permissions and folder settings page
* fixing snapshot list page nav model
* remove unused file
* Added placeholder page for playlist
* Moved browser compatability to index-template
* Restored 404/default page
* Fixed reset password page
* Fixed SignUpInvited page
* Fixing CreateTeam, Create user page, add panel widget
* Restore browwser file to make tests happy
* Fixed unit tests
* Removed unused import
* Replacing usage of updateLocation
* Fixed test
* Updating search filters to use history / location service for filters
* remove unused file
* AppRootPage fixed
* Fixing test and search issue
* Changes to support enterprise extensions
* remove console.log
* Removing more use of redux location
* Fixed signup page
* removed unused old angular controllers
* Fixing bugs
* one final bugfix
* Removed location from redux state
* Fixing ts issues and tests
* Fixing test issue
* fixing tests
* Fixing tests
* removed unused stuff
* Fixed search test
* Adding some doc comments
* Routing NG: Angular location provider patch (#31773)
* Patch Angulars $location provider
* Update public/app/angular/bridgeReactAngularRouting.ts
* Remove only test
* Update tests, disable loggers in test env
* Routing NG: remove $location provider usage (#31816)
* Remove dashboard_loaders
* Remove $location from Analytics service, track page views form GrafanaRoute
* Remove NotificationsEditCtrl
* Remove Angular dependencies from uploadDashboardDirective
* Update public/app/features/dashboard/containers/DashboardPage.tsx
Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
* Update public/app/features/dashboard/containers/DashboardPage.tsx
Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
* Remove unused test helpers (#31831)
* Playlist react (#31829)
* playlist list in react
* Playlist start
* Things started to work
* Updated
* Handle empty list
* Fix ts
* Fixes and kiosk mode stuff
* Removed unused events
* fixing ts issue
* Another ts issue
* Fixing tests
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
* fixed test
* Update public/app/AppWrapper.tsx
Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
* Update public/app/AppWrapper.tsx
Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
* Remove Angular dependency from DashboardLoaderSrv (#31863)
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
Co-authored-by: Torkel Ödegaard <torkel@grafana.org>
Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>
Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
* Fix tooltip in the way
* Add more info for instant query
* Update public/app/plugins/datasource/loki/components/LokiOptionFields.tsx
* Update public/app/plugins/datasource/prometheus/components/PromExploreExtraField.tsx
* add support for displaying all selected levels for cascader
* add story for Cascader with display all selected levels
* add tests for Cascader with displayAllSelectedLevels prop
* replace enzyme test with RTL for cascader
* Bring back clickable Stat, Gauge and BarGauge panels
* Demo dashboard
* Add DataLinksContextMenu tests
* Only use new UI for data links, revert panel links logic
* Tempo: Support opentelemetry response
* Tempo: convert Tempo to backend data source
* Update data source test
* Fix lint issues
* Apply suggestions from code review
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* Return error when trace not found
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* Admin: Keeps expired keys visible in table after delete
* Chore: covers component in tests before refactor
* Refactor: splitting up into smaller components
* Chore: fixes a small issue with the validation
* Chore: forgot to export type
This is directory which stores Go modules with pinned buildable package that is used within this repository, managed by https://github.com/bwplotka/bingo.
* Run `bingo get` to install all tools having each own module file in this directory.
* Run `bingo get <tool>` to install <tool> that have own module file in this directory.
* For Makefile: Make sure to put `include .bingo/Variables.mk` in your Makefile, then use $(<upper case tool name>) variable where <tool> is the .bingo/<tool>.mod.
* For shell: Run `source .bingo/variables.env` to source all environment variable for each tool.
* For go: Import `.bingo/variables.go` to for variable names.
* See https://github.com/bwplotka/bingo or -h on how to add, remove or change binaries dependencies.
- Run `bingo get` to install all tools having each own module file in this directory.
- Run `bingo get <tool>` to install <tool> that have own module file in this directory.
- For Makefile: Make sure to put `include .bingo/Variables.mk` in your Makefile, then use $(<upper case tool name>) variable where <tool> is the .bingo/<tool>.mod.
- For shell: Run `source .bingo/variables.env` to source all environment variable for each tool.
- For go: Import `.bingo/variables.go` to for variable names.
- See https://github.com/bwplotka/bingo or -h on how to add, remove or change binaries dependencies.
about: Suggest a component for the @grafana/ui package
labels: 'area/grafana/ui'
---
<!--
By using this template you will make it easier for us to make sure that documentation and implementation stays up to date for every component in @grafana/ui
Thank you!
-->
**Why is this component needed**:
<!-- Explain your use case -->
___
- [ ] Is/could it be used in more than one place in Grafana?
**Where is/could it be used?**:
___
- [ ] Post screenshots possible.
- [ ] It has a single use case.
- [ ] It is/could be used in multiple places.
**Implementation** (Checklist meant for the person implementing the component)
- [ ] Component has a story in Storybook.
- [ ] Props and naming follows [our style guide](https://github.com/grafana/grafana/blob/main/contribute/style-guides/frontend.md).
- [ ] It is extendable (rest props are spread, styles with className work, and so on).
- [ ] Uses [theme for spacing, colors, and so on](https://github.com/grafana/grafana/blob/main/contribute/style-guides/themes.md).
- [ ] Works with both light and dark theme.
**Documentation**
- [ ] Properties are documented.
- [ ] Use cases are described.
- [ ] Code examples for the different use cases.
- [ ] Dos and don'ts.
- [ ] Styling guidelines, specific color usage (if applicable).
about: Suggest a component for the @grafana/ui package
labels: 'area/grafana/ui'
---
<!--
By using this template you will make it easier for us to make sure that documentation and implementation stays up to date for every component in @grafana/ui
Thank you!
-->
**Why is this component needed**:
<!-- Explain your use case -->
___
- [ ] Is/could it be used in more than one place in Grafana?
**Where is/could it be used?**:
___
- [ ] Post screenshots possible.
- [ ] It has a single use case.
- [ ] It is/could be used in multiple places.
**Implementation** (Checklist meant for the person implementing the component)
- [ ] Component has a story in Storybook.
- [ ] Props and naming follows [our style guide](https://github.com/grafana/grafana/blob/master/contribute/style-guides/frontend.md).
- [ ] It is extendable (rest props are spread, styles with className work, and so on).
- [ ] Uses [theme for spacing, colors, and so on](https://github.com/grafana/grafana/blob/master/contribute/style-guides/themes.md).
- [ ] Works with both light and dark theme.
**Documentation**
- [ ] Properties are documented.
- [ ] Use cases are described.
- [ ] Code examples for the different use cases.
- [ ] Dos and don'ts.
- [ ] Styling guidelines, specific color usage (if applicable).
Thank you for sending a pull request! Here are some tips:
1. If this is your first time, please read our contribution guide at https://github.com/grafana/grafana/blob/master/CONTRIBUTING.md
1. If this is your first time, please read our contribution guide at https://github.com/grafana/grafana/blob/main/CONTRIBUTING.md
2. Ensure you include and run the appropriate tests as part of your Pull Request.
@@ -10,7 +10,7 @@ Thank you for sending a pull request! Here are some tips:
4. If the Pull Request is a work in progress, make use of GitHub's "Draft PR" feature and mark it as such.
5. If you can not merge your Pull Request due to a merge conflict, Rebase it. This gets it in sync with the master branch.
5. If you can not merge your Pull Request due to a merge conflict, Rebase it. This gets it in sync with the main branch.
6. Name your PR as "<FeatureArea>: Describe your change", e.g. Alerting: Prevent race condition. If it's a fix or feature relevant for the changelog describe the user impact in the title. The PR title is used to auto-generate the changelog for issues marked with the "add to changelog" label.
The bot is configured via [commands.json](https://github.com/grafana/grafana/blob/master/.github/commands.json) and some other GitHub workflows [workflows](https://github.com/grafana/grafana/tree/master/.github/workflows).
The bot is configured via [commands.json](https://github.com/grafana/grafana/blob/main/.github/commands.json) and some other GitHub workflows [workflows](https://github.com/grafana/grafana/tree/main/.github/workflows).
Comment commands:
@@ -17,7 +17,7 @@ Label commands:
## Metrics
Metrics are configured in [metrics-collector.json](https://github.com/grafana/grafana/blob/master/.github/metrics-collector.json) and are also defined in the
Metrics are configured in [metrics-collector.json](https://github.com/grafana/grafana/blob/main/.github/metrics-collector.json) and are also defined in the
"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/master/CONTRIBUTING.md) guidelines.\n\nHappy graphing!"
"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",
@@ -20,7 +20,7 @@
"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/master/CONTRIBUTING.md) guidelines.\n\nHappy graphing!"
"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",
@@ -41,7 +41,7 @@
"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/master/CONTRIBUTING.md) guidelines.\n\nHappy graphing!"
"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!"
@@ -26,10 +26,12 @@ Report a bug by submitting a [bug report](https://github.com/grafana/grafana/iss
Follow the issue template and add additional information that will help us replicate the problem.
For data visualization issues:
- Query results from the inspect drawer (data tab & query inspector)
- Panel settings can be extracted in the panel inspect drawer JSON tab
For a dashboard related issues:
- Dashboard JSON can be found in the dashboard settings JSON model view
For authentication and alerting Grafana server logs are useful.
@@ -40,7 +42,7 @@ If you believe you've found a security vulnerability, please read our [security
### Suggest enhancements
If you have an idea of how to improve Grafana, submit an [enhancement request](https://github.com/grafana/grafana/issues/new?labels=type%3A+feature+request&template=2-feature_request.md).
If you have an idea of how to improve Grafana, submit an [enhancement request](https://github.com/grafana/grafana/discussions/new).
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.
@@ -76,4 +78,4 @@ Before we can accept your pull request, you need to [sign our CLA](https://grafa
- Set up your [development environment](contribute/developer-guide.md).
- Learn how to [contribute documentation](contribute/documentation.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/master/contribute) folder.
- Look through the resources in the [contribute](https://github.com/grafana/grafana/tree/main/contribute) folder.
@@ -301,12 +301,12 @@ Even if you don't have the time or knowledge to investigate an issue we highly r
## 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/master/.github/commands.json). Or in other [GitHub Actions](https://github.com/grafana/grafana/tree/master/.github/workflows)
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.
[Read more on bot actions](https://github.com/grafana/grafana/blob/master/.github/bot.md)
[Read more on bot actions](https://github.com/grafana/grafana/blob/main/.github/bot.md)
@@ -17,7 +17,7 @@ for built-in plugins and everything internal. External plugins still use systemj
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/master/public/app/features/plugins/plugin_loader.ts#L48)
[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.
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:
@@ -33,6 +33,7 @@ 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).
@@ -4,14 +4,14 @@ Upgrading Go or Node.js requires making changes in many different files. See bel
## Go
-CircleCi
-Drone
-`grafana/build-container`
- Appveyor
- Dockerfile
## Node.js
-CircleCI
-Drone
-`grafana/build-container`
- Appveyor
- Dockerfile
@@ -20,28 +20,29 @@ Upgrading Go or Node.js requires making changes in many different files. See bel
The Grafana project uses [Go modules](https://golang.org/cmd/go/#hdr-Modules__module_versions__and_more) to manage dependencies on external packages. This requires a working Go environment with version 1.11 or greater installed.
> **Note:** Since most developers of Grafana still use the `GOPATH` we need to specify `GO111MODULE=on` to make `go mod` and `got get` work as intended. If you have setup Grafana outside of the `GOPATH` on your machine you can skip `GO111MODULE=on` when running the commands below.
To add or update a new dependency, use the `go get` command:
```bash
# The GO111MODULE variable can be omitted when the code isn't located in GOPATH.
# Pick the latest tagged release.
GO111MODULE=on go get example.com/some/module/pkg
go get example.com/some/module/pkg
# Pick a specific version.
GO111MODULE=on go get example.com/some/module/pkg@vX.Y.Z
go get example.com/some/module/pkg@vX.Y.Z
```
Tidy up the `go.mod` and `go.sum` files:
```bash
# The GO111MODULE variable can be omitted when the code isn't located in GOPATH.
GO111MODULE=on go mod tidy
go mod tidy
```
You have to commit the changes to `go.mod` and `go.sum` before submitting the pull request.
To understand what the actual dependencies of `grafana-server` are, one could run it with `-vv` flag. This might produce an output, different from `go.mod` contents and `-vv` option is the source of truth here. It lists the modules _compiled_ into the executable, while `go.mod` lists also test and weak transitive dependencies (modules, used in some package, which is not in use by itself). If you are interested in reporting a vulnerability in a dependency module - please consult `-vv` output, maybe the "dependency" is not a dependency as such.
### Upgrading dependencies
If you need to upgrade a direct or indirect dependency, you can do it like so, $MODULE being the dependency in question: `go get -u $MODULE`. The corresponding entry in go.mod should then have the version you specified; if it's an indirect dependency, the entry should have the `// indirect` comment. Follow this by executing `go mod tidy`, to ensure that go.mod and go.sum are up to date. If the indirect dependency turns out to not be used (transitively) by any of our packages, `go mod tidy` will actually strip it from go.mod. In that case, you can just ignore it since it isn't used in the end.
## Node.js dependencies
Updated using `yarn`.
@@ -50,9 +51,9 @@ Updated using `yarn`.
## Where to make changes
### CircleCI
### Drone
Our builds run on CircleCI through our build script.
Our CI builds run on Drone.
#### Files
@@ -66,9 +67,9 @@ Our builds run on CircleCI through our build script.
### grafana/build-container
The main build step (in CircleCI) is built using a custom build container that comes pre-baked with some of the necessary dependencies.
The main build steps (in Drone) happen using a custom Docker image that comes pre-baked with some of the necessary dependencies.
@@ -12,7 +12,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 master branch. Depending on size of the proposed change, each change SHOULD be discussed, in increasing order of change size and complexity:
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
@@ -23,7 +23,7 @@ Significant changes MUST be discussed and agreed upon with the relevant subsyste
## Merging PRs (Pull Requests)
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 master using PRs. They MUST NOT be merged into master directly.
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
@@ -40,7 +40,7 @@ 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/master/.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.
@@ -51,7 +51,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:
- Master and release branches MUST always build without failure.
- 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
- Changes which span multiple PRs MUST be described in an overarching issue or Google Doc.
@@ -61,8 +61,8 @@ 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 master.
- MINOR release branches MUST be based on master.
- 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
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.
# 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=false
# 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.
# 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.
# Enter a comma-separated list of plugin identifiers to identify plugins that are allowed to be loaded even if they lack a valid signature.
# 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.
#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 = false
# 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.
# 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.
# Makes it possible to turn off alert rule execution but alerting UI is visible
# 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)
@@ -675,7 +779,6 @@
# This limit will protect the server from render overloading and make sure notifications are sent out quickly
;concurrent_render_limit = 5
# Default setting for alert calculation timeout. Default value is 30
;evaluation_timeout_seconds = 30
@@ -832,9 +935,33 @@
[plugins]
;enable_alpha = false
;app_tls_skip_verify_insecure = false
# Enter a comma-separated list of plugin identifiers to identify plugins that are allowed to be loaded even if they lack a valid signature.
# 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.
Grafana uses a _bus_ to pass messages between different parts of the application. All communication over the bus happens synchronously.
There are three types of messages: _events_, _commands_, and _queries_.
## Events
An event is something that happened in the past. Since an event has already happened, you can't change it. Instead, you can react to events by triggering additional application logic to be run, whenever they occur.
> Because they happened in the past, event names are written in past tense, such as `UserCreated`, and `OrgUpdated`.
### Subscribe to an event
In order to react to an event, you first need to _subscribe_ to it.
To subscribe to an event, register an _event listener_ in the service's `Init` method:
**Tip:** Browse the available events in the `events` package.
### Publish an event
If you want to let other parts of the application react to changes in a service, you can publish your own events:
```go
event:=&events.StickersSentEvent{
UserID:"taylor",
Count:1,
}
iferr:=s.bus.Publish(event);err!=nil{
returnerr
}
```
## Commands
A command is a request for an action to be taken. Unlike an event's fire-and-forget approach, a command can fail as it is handled. The handler will then return an error.
> Because we request an operation to be performed, command are written in imperative mood, such as `CreateFolderCommand`, and `DeletePlaylistCommand`.
### Dispatch a command
To dispatch a command, pass the `context.Context` and object to the `DispatchCtx` method:
```go
// context.Context from caller
ctx:=req.Request.Context()
cmd:=&models.SendStickersCommand{
UserID:"taylor",
Count:1,
}
iferr:=s.bus.DispatchCtx(ctx,cmd);err!=nil{
iferr==bus.ErrHandlerNotFound{
returnnil
}
returnerr
}
```
> **Note:** `DispatchCtx` will return an error if no handler is registered for that command.
> **Note:** `Dispatch` currently exists and requires no `context.Context` to be provided, but it's strongly suggested to not use this since there's an ongoing refactoring to remove usage of non-context-aware functions/methods and use context.Context everywhere.
**Tip:** Browse the available commands in the `models` package.
### Handle commands
Let other parts of the application dispatch commands to a service, by registering a _command handler_:
To handle a command, register a command handler in the `Init` function.
> **Note:** The handler method may return an error if unable to complete the command.
> **Note:** `AddHandler` currently exists and requires no `context.Context` to be provided, but it's strongly suggested to not use this since there's an ongoing refactoring to remove usage of non-context-aware functions/methods and use context.Context everywhere.
## Queries
A command handler can optionally populate the command sent to it. This pattern is commonly used to implement _queries_.
### Making a query
To make a query, dispatch the query instance just like you would a command. When the `DispatchCtx` method returns, the `Results` field contains the result of the query.
```go
// context.Context from caller
ctx:=req.Request.Context()
query:=&models.FindDashboardQuery{
ID:"foo",
}
iferr:=bus.DispatchCtx(ctx,query);err!=nil{
returnerr
}
// The query now contains a result.
for_,item:=rangequery.Results{
// ...
}
```
> **Note:** `Dispatch` currently exists and requires no `context.Context` to be provided, but it's strongly suggested to not use this since there's an ongoing refactoring to remove usage of non-context-aware functions/methods and use context.Context everywhere.
### Return query results
To return results for a query, set any of the fields on the query argument before returning:
_, err := sess.Exec("DELETE FROM dashboards WHERE dashboard_id=?", cmd.DashboardID)
return err
})
}
```
Here, `inTransaction` is a helper function in the `sqlstore` package that provides a session, that lets you execute SQL statements.
Here, `inTransactionCtx` is a helper function in the `sqlstore` package that provides a session, that lets you execute SQL statements.
## `SQLStore`
@@ -61,7 +61,7 @@ type MyService struct {
You can now make SQL queries in any of your [command handlers](communication.md#handle-commands) or [event listeners](communication.md#subscribe-to-an-event):
```go
func (s *MyService) DeleteDashboard(cmd *models.DeleteDashboardCommand) error {
func (s *MyService) DeleteDashboard(ctx context.Context, cmd *models.DeleteDashboardCommand) error {
if err := s.SQLStore.WithDbSession(ctx, func(sess *sqlstore.DBSession) error {
_, err := sess.Exec("DELETE FROM dashboards WHERE dashboard_id=?", cmd.DashboardID)
return err
@@ -79,7 +79,7 @@ To see all the types of migrations you can add, refer to [migrations.go](/pkg/se
Before you add a migration, make sure that you:
- Never change a migration that has been committed and pushed to master.
- Never change a migration that has been committed and pushed to main.
- Always add new migrations, to change or undo previous migrations.
Add a migration using one of the following methods:
A Grafana _service_ encapsulates and exposes application logic to the rest of the application, through a set of related operations.
Grafana uses [Wire](https://github.com/google/wire), which is a code generation tool that automates connecting components using [dependency injection](https://en.wikipedia.org/wiki/Dependency_injection). Dependencies between components are represented in Wire as function parameters, encouraging explicit initialization instead of global variables.
Even though the services in Grafana do different things, they share a number of patterns. To better understand how a service works, let's build one from scratch!
Before a service can start communicating with the rest of Grafana, it needs to be registered with Wire, see `ProvideService` factory function/method in the service example below and how it's being referenced in the wire.go example below.
When Wire is run it will inspect the parameters of `ProvideService` and make sure that all it's dependencies has been wired up and initialized properly.
**Service example:**
```go
packageexample
// Service service is the service responsible for X, Y and Z.
typeServicestruct{
loggerlog.Logger
cfg*setting.Cfg
sqlStore*sqlstore.SQLStore
}
// ProvideService provides Service as dependency for other services.
A background service is a service that runs in the background of the lifecycle between Grafana starts up and shutdown. If you want a service to be run in the background your Service should satisfy the `registry.BackgroundService` interface and add it as argument to the [ProvideBackgroundServiceRegistry](/pkg/server/backgroundsvcs/background_services.go) function and add it as argument to `NewBackgroundServiceRegistry` to register it as a background service.
You can see an example implementation above of the Run method.
## Disabled services
If you want to guarantee that a background service is not run by Grafana when certain criteria is met/service is disabled your service should satisfy the `registry.CanBeDisabled` interface. When the service.IsDisabled method return false Grafana would not call the service.Run method.
If you want to run certain initialization code if service is disabled or not, you need to handle this in the service factory method.
You can see an example implementation above of the IsDisabled method and custom initialization code when service is disabled.
## 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.
## OSS vs Enterprise
Grafana OSS and Grafana Enterprise shares code and dependencies. Grafana Enterprise might need to override/extend certain OSS services.
There's a [wireexts_oss.go](/pkg/server/wireexts_oss.go) that has the `wireinject` and `oss` build tags as requirements. Here services that might have other implementations, e.g. Grafana Enterprise, can be registered.
Similarly, there's a wireexts_enterprise.go file in the Enterprise source code repository where other service implementations can be overridden/be registered.
To extend oss background service create a specific background interface for that type and inject that type to [ProvideBackgroundServiceRegistry](/pkg/server/backgroundsvcs/background_services.go) instead of the concrete type. Then add a wire binding for that interface in [wireexts_oss.go](/pkg/server/wireexts_oss.go) and in the enterprise wireexts file.
## Methods
Any public method of a service should take `context.Context` as its first argument. If the method calls the bus, other services or the database the context should be propagated, if possible.
Grafana uses a _bus_ to pass messages between different parts of the application. All communication over the bus happens synchronously.
There are three types of messages: _events_, _commands_, and _queries_.
## Events
An event is something that happened in the past. Since an event has already happened, you can't change it. Instead, you can react to events by triggering additional application logic to be run, whenever they occur.
> Because they happened in the past, event names are written in past tense, such as `UserCreated`, and `OrgUpdated`.
### Subscribe to an event
In order to react to an event, you first need to _subscribe_ to it.
To subscribe to an event, register an _event listener_ in the service's `Init` method:
**Tip:** Browse the available events in the `events` package.
### Publish an event
If you want to let other parts of the application react to changes in a service, you can publish your own events:
```go
event:=&events.StickersSentEvent{
UserID:"taylor",
Count:1,
}
iferr:=s.bus.Publish(event);err!=nil{
returnerr
}
```
## Commands
A command is a request for an action to be taken. Unlike an event's fire-and-forget approach, a command can fail as it is handled. The handler will then return an error.
> Because we request an operation to be performed, command are written in imperative mood, such as `CreateFolderCommand`, and `DeletePlaylistCommand`.
### Dispatch a command
To dispatch a command, pass the object to the `Dispatch` method:
```go
cmd:=&models.SendStickersCommand{
UserID:"taylor",
Count:1,
}
iferr:=s.bus.Dispatch(cmd);err!=nil{
iferr==bus.ErrHandlerNotFound{
returnnil
}
returnerr
}
```
> **Note:** `Dispatch` will return an error if no handler is registered for that command.
**Tip:** Browse the available commands in the `models` package.
### Handle commands
Let other parts of the application dispatch commands to a service, by registering a _command handler_:
To handle a command, register a command handler in the `Init` function.
> **Note:** The handler method may return an error if unable to complete the command.
## Queries
A command handler can optionally populate the command sent to it. This pattern is commonly used to implement _queries_.
### Making a query
To make a query, dispatch the query instance just like you would a command. When the `Dispatch` method returns, the `Results` field contains the result of the query.
```go
query:=&models.FindDashboardQuery{
ID:"foo",
}
iferr:=bus.Dispatch(query);err!=nil{
returnerr
}
// The query now contains a result.
for_,item:=rangequery.Results{
// ...
}
```
### Return query results
To return results for a query, set any of the fields on the query argument before returning:
@@ -12,7 +12,7 @@ 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/master/docs/sources/packages_api/runtime/backendsrvrequest.md) when you use [BackendSrv](https://grafana.com/docs/grafana/latest/packages_api/runtime/backendsrv).
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.
A Grafana _service_ encapsulates and exposes application logic to the rest of the application, through a set of related operations.
Before a service can start communicating with the rest of Grafana, it needs to be registered in the _service registry_.
The service registry keeps track of all available services during runtime. On start-up, Grafana uses the registry to build a dependency graph of services, a _service graph_.
Even though the services in Grafana do different things, they share a number of patterns. To better understand how a service works, let's build one from scratch!
## Create a service
To start building a service:
- Create a new Go package `mysvc` in the [pkg/services](/pkg/services) directory.
- Create a `service.go` file inside your new directory.
All services need to implement the [Service](https://godoc.org/github.com/grafana/grafana/pkg/registry#Service) interface:
```go
typeMyServicestruct{
}
func(s*MyService)Init()error{
returnnil
}
```
The `Init` method is used to initialize and configure the service to make it ready to use. Services that return an error halt Grafana's startup process and cause the error to be logged as it exits.
## Register a service
Every service needs to be registered with the application for it to be included in the service graph.
To register a service, call the `registry.RegisterService` function in an `init` function within your package.
```go
funcinit(){
registry.RegisterService(&MyService{})
}
```
`init` functions are only run whenever a package is imported, so we also need to import the package in the application. In the `server.go` file under `pkg/server`, import the package we just created:
@@ -16,10 +16,10 @@ If this is your first time contributing to an open-source project on GitHub, mak
To increase the chance of having your pull request accepted, make sure your pull request follows these guidelines:
- Title and description matches the implementation.
- Commits within the pull request follow the [Formatting guidelines](#Formatting-guidelines).
- Commits within the pull request follow the [Formatting guidelines](#Formatting-guidelines).
- The pull request closes one related issue.
- The pull request contains necessary tests that verify the intended behavior.
- If your pull request has conflicts, rebase your branch onto the master branch.
- If your pull request has conflicts, rebase your branch onto the main branch.
If the pull request fixes a bug:
@@ -43,6 +43,29 @@ Pull requests for Redux contributions must:
- Not contain code that mutates state in reducers or thunks.
- Not contain code that accesses the reducers state slice directly. Instead, the code should use state selectors to access state.
Pull requests that add or modify unit tests that are written in Jest must adhere to these guidelines:
- Don't add snapshots tests. We are incrementally removing existing snapshot tests, we don't want more.
- If an existing unit test is written in Enzyme, migrate it to RTL (React Testing Library), unless you’re fixing a bug. Bug fixes usually shouldn't include any bigger refactoring, so it’s ok to skip migrating the test to RTL.
Pull requests that create new UI components or modify existing ones must adhere to the following accessibility guidelines:
- Use semantic HTML.
- Use ARIA roles, labels and other accessibility attributes correctly. Accessibility attributes should only be used when semantic HTML doesn't satisfy your use case.
- Use the [Grafana theme palette](/contribute/style-guides/themes.md) for styling. It contains colors with good contrast which aids accessibility.
- Use [RTL](https://testing-library.com/docs/dom-testing-library/api-accessibility/) for writing unit tests. It helps to create accessible components.
Pull requests that introduce accessibility(a11y) errors:
We use [pa11y-ci](https://github.com/pa11y/pa11y-ci) to collect accessibility errors on [some URLs on the project](https://github.com/grafana/grafana/issues/36555), threshold errors are specified per URL.
If the contribution introduces new a11y errors, our continuous integration will fail, preventing you to merge on the main branch. In those cases there are two alternatives for moving forward:
- Check the error log on the pipeline step `test-a11y-frontend-pr`, identify what was the error, and fix it.
- Locally run the command `yarn test:accessibility-report` that generates an HTML accessibility report, then go to the URL that contains your change, identify the error, and fix it. Keep in mind, a local Grafana instance needs to be running on `http://localhost:3000`.
You can also prevent introducing a11y errors by installing an a11y plugin in your browser, for example, axe DevTools, Accessibility Insights for Web among others.
### Backend-specific guidelines
Please refer to the [backend style guidelines](/contribute/style-guides/backend.md).
@@ -90,6 +113,8 @@ For changes to panels, the area should be the name of the panel, suffixed with P
-`GraphPanel: Fix legend sorting issues`
-`Docs: Changed url to URL in all documentation files`
If you're unsure, please have a look at the existing [changelog](https://github.com/grafana/grafana/blob/main/CHANGELOG.md) for inspiration/guidance.
### Pull request titles
The Grafana team _squashes_ all commits into one when we accept a pull request. The title of the pull request becomes the subject line of the squashed commit message. We still encourage contributors to write informative commit messages, as they becomes a part of the Git commit body.
@@ -102,6 +127,6 @@ Make sure that the title for your pull request uses the same format as the subje
If your PR includes configuration changes, all of the following files must be changed correspondingly:
@@ -10,8 +10,14 @@ Make sure you have the following dependencies installed before setting up your d
- [Git](https://git-scm.com/)
- [Go](https://golang.org/dl/) (see [go.mod](../go.mod#L3) for minimum required version)
- [Node.js (Long Term Support)](https://nodejs.org)
- [Yarn](https://yarnpkg.com)
Additionally you'll need:
- [Node.js](https://nodejs.org) (see `volta.node` property in [package.json](../package.json) for the correct version).
- [Yarn](https://yarnpkg.com) (see `volta.yarn` property in [package.json](../package.json) for the correct version).
We recommend using [Volta](https://github.com/volta-cli/volta) to manage your JS toolchain.
Refer to the [Volta Getting Started Guide](https://docs.volta.sh/guide/getting-started) for setup instructions for your operating system.
### macOS
@@ -20,14 +26,11 @@ We recommend using [Homebrew](https://brew.sh/) for installing any missing depen
```
brew install git
brew install go
brew install node@14
npm install -g yarn
```
### Windows
If you are running Grafana on Windows 10, we recommend installing the Windows Subsystem for Linux (WSL). For installation instructions, refer to the [Microsoft WSL Installation Guide](https://docs.microsoft.com/en-us/windows/wsl/install-win10).
If you are running Grafana on Windows 10, we recommend installing the Windows Subsystem for Linux (WSL). For installation instructions, refer to our [Grafana setup guide for Windows environment](https://grafana.com/blog/2021/03/03/how-to-set-up-a-grafana-development-environment-on-a-windows-pc-using-wsl/).
When a pull request has been reviewed and approved by at least one person and all checks have passed it's time to merge the pull request.
## Who is expected to merge a pull request?
Maintainers are responsible for merging all pull requests. If a maintainer has opened a pull request the general rule is that the same maintainer merges the pull request. If a non-maintainer has opened a pull request it's suggested that one of the maintainers reviewing the pull request merges the pull request.
## Checklist/summary
The following checklist/summary should give you a quick overview of what to ask/consider before merging a pull request.
- Reviewed and approved?
- All checks passed?
- Proper pull request title?
- Milestone assigned?
- Add to changelog/release notes?
- Needs backporting?
## Before merge
Before actually merging a pull request there's a couple of things to take into consideration.
### Format the pull request title
Make sure that the pull request title is properly formatted according to `<Area>: <Summary>` and try to make the summary short and understandable for the community as a whole.
All commits in a pull request are squashed when merged and the pull request title will be the default subject line of the squashed commit message. It's also used for [changelog/release notes](#include-in-changelog-and-release-notes).
See [formatting guidelines](create-pull-request.md#formatting-guidelines) for more information.
### Assign a milestone
It's recommended to add a milestone to every pull request. This makes it easier to track what changes did go into a certain release. Without this you're basically left with going through git commits which could be a lot harder.
There's also various tooling built that in some cases requires a pull request to be assigned a milestone, for example [generating changelog/release notes](#include-in-changelog-and-release-notes).
### Include in changelog and release notes?
At Grafana we generate the [changelog](https://github.com/grafana/grafana/blob/main/CHANGELOG.md) and [release notes](https://grafana.com/docs/grafana/latest/release-notes/) based on merged pull requests. Including changes in the changelog/release notes is very important to provide a somewhat complete picture of what changes a Grafana release actually includes.
Exactly what changes should be added to the changelog is hard to answer but some general guidance would be any change that you think would be interesting for the community as a whole. Use your best judgement and/or ask other maintainers for advice.
There's a GitHub action available in the repository named [Update changelog](https://github.com/grafana/grafana/blob/main/.github/workflows/update-changelog.yml) that can manually be triggered to re-generate the changelog and release notes for any release.
To include a pull request in the changelog/release notes the general rule of thumb is that a milestone should be assigned and labeled with `add to changelog`.
The changelog/release notes are divided into sections and here's a description of how you make a pull request show up in a certain section.
**Features and enhancements:**
Milestone assigned and labeled with `add to changelog` and any of the other section rules don't apply.
**Bug fixes:**
Milestone assigned and labeled with `add to changelog` and either labeled with `type/bug` or the pull request title contains `fix` or `fixes`.
**Plugin development fixes & changes:**
Milestone assigned and labeled with `area/grafana/toolkit`, `area/grafana/ui` or `area/grafana/runtime`.
**Deprecations:**
In case the pull request introduces a deprecation you should document this. Label the pull request with `add to changelog` and use the following template at the end of the pull request description describing the deprecation change.
```md
# Deprecation notice
<Deprecation description>
```
**Breaking changes:**
In case the pull request introduces a breaking change you should document this. Label the pull request with `add to changelog` and `breaking change` and use the following template at the end of the pull request description describing the breaking change.
```md
# Release notice breaking change
<Breaking change description>
```
### Should the pull request be backported?
If your pull request has changes that need to go into one or several existing release branches you need to backport the changes. Please refer to [Backport PR](.github/bot.md#backport-pr) for detailed instructions.
Some examples when backport is required:
- The change needs to be released in the next upcoming patch release, e.g. v8.1.3, so you have to backport it, e.g. into the v8.1.x release branch.
- You have a change to be released in the next major/minor release, e.g. v8.0.0, and there's already a release branch, e.g. v8.0.x, you have to backport it, e.g. into the v8.0.x release branch.
- The change includes documentation changes that needs to be updated for one or multiple older versions, then you have to backport it to each release branch.
Some examples when backport is not required:
- The change is supposed to be released in the next major/minor release, e.g. v8.0.0, but the release branch, e.g. v8.0.x, has not yet been created.
> **Note:** You can still backport a pull request after it's been merged.
## Doing the actual merge
Time to actually merge the pull request changes. All commits in a pull request are squashed, hence the GitHub `Squash and merge` button is used to initialize the merge.
This will present you with options allowing you to optionally change the commit message before merging. Please remember that developers might use the commit information when reviewing changes of files, doing git blame and resolving merge conflicts etc., trying to quickly figure out what the actual change was. But there's not really any best practices around this, the following is an attempt to bring some guidance.
Do:
- Make sure the pull request title is formatted properly before merging, this will automatically give you a good and short summary of the commit/change.
- Leave `Co-authored-by:` lines as is so that co-authors will be accounted for the contribution.
- Remove any commit information that doesn't bring any context to the change.
Consider:
- Add any references to issues that the pull request fixes/closes/references to ease giving quick context to things. Doing this allows cross-reference between the commit and referenced issue(s).
Finalize the merge by clicking on the `Confirm squash and merge` button.
## After the merge
Make sure to close any referenced/related issues. It's recommended to assign the same milestone on the issues that the pull request fixes/closes, but not required.
The *Documentation style guide* is a living document. Add to it whenever a style decision is made or a question is answered regarding style, grammar, or word choice.
The _Documentation style guide_ is a living document. Add to it whenever a style decision is made or a question is answered regarding style, grammar, or word choice.
## Published guides
For all items that are not covered in this guide, refer to the [Microsoft Style Guide](https://docs.microsoft.com/en-us/style-guide/welcome/) and the [Chicago Manual of Style](https://www.chicagomanualofstyle.org/home.html).
For all items that are not covered in this guide, refer to the [Google developer documentation style guide](https://developers.google.com/style) and the [Microsoft style guide](https://docs.microsoft.com/en-us/style-guide/welcome/), in that order.
## Spelling
@@ -46,10 +46,14 @@ Avoid _master_ or _slave_.
## Grafana-specific style
The following guidelines are specific to Grafana documentation. For the most part, these are *guidelines* are not rigid rules. If you have questions, ask in the #docs channel of Grafana Slack.
The following guidelines are specific to Grafana documentation. For the most part, these are _guidelines_ are not rigid rules. If you have questions, then please ask in the #docs channel of Grafana Slack.
### General
Per the [Voice and tone](https://developers.google.com/style/tone) section of the Google developer documentation style guide:
> In your documents, aim for a voice and tone that's conversational, friendly, and respectful without being overly colloquial or frivolous; a voice that's casual and natural and approachable, not pedantic or pushy. Try to sound like a knowledgeable friend who understands what the developer wants to do.
- Use active voice:
- Active: Grafana displays the heatmap visualization.
- Passive: The heatmap visualization is displayed.
@@ -104,6 +108,7 @@ However, sometimes we need to use headings as numbered steps. This is mostly in
If that is the case, then use the following format for headings:
##### Step 1. Install the software
##### Step 2. Run the software
### Images
@@ -114,10 +119,17 @@ If that is the case, then use the following format for headings:
- Assume all graphics will be exclusively viewed on the web.
- Maximum image size is 3840px X 2160px.
- Screenshots should be readable, but not too large.
- _Do not_ use image shortcodes. Follow the guidance in the [Grafana markdown guide](https://github.com/grafana/grafana/blob/master/contribute/style-guides/documentation-markdown-guide.md#images).
- _Do not_ use image shortcodes. Follow the guidance in the [Grafana markdown guide](https://github.com/grafana/grafana/blob/main/contribute/style-guides/documentation-markdown-guide.md#images).
- Markdown image links are preferred. Only use the HTML image links if you need to style the image in ways unsupported in Markdown.
- When you name a file, follow the [file naming conventions](#file-naming-conventions). Example: image-name-7-3.png
### Unordered lists
Here are a few general rules about unordered lists. For more guidance, refer to [Lists](https://developers.google.com/style/lists) in the [Google developer style guide](https://developers.google.com/style/).
- List items should begin with a capital letter unless there is a strong reason not to. For example, you are listing case-sensitive parameters.
- List items should end with periods if they are complete sentences. If one item in a list ends with a period, then apply periods to all of them.
### Capitalization
- Grafana, Loki, and Prometheus are always capitalized unless part of a code block.
@@ -142,6 +154,7 @@ In general, "integration" is not capitalized. Only capitalize it if it is capita
The first letter of the name of an integration is always capitalized, even if the original named source is lowercase.
**Examples:**
- MySQL Integration
- CockroachDB Integration
- Etcd Integration
@@ -205,16 +218,20 @@ Warnings tell the user not to do something. For example:
- Do not assume everyone is using Linux. Make sure instructions include enough information for Windows and Mac users to successfully complete procedures.
- Do not add `$` before commands. Make it easy for users to copy and paste commands.
- **Right:** `sudo yum install grafana`
- **Wrong:** `$ sudo yum install grafana`
- Include `sudo` before commands that require `sudo` to work.
For terminal examples and Grafana configuration, use a `bash` code block:
```bash
sudo yum install grafana
```
For HTTP request/response, use an `http` code block:
```http
GET/api/dashboards/id/1/permissionsHTTP/1.1
Accept:application/json
@@ -252,6 +269,7 @@ Two words if used as a verb, one word if used as a noun.
Two words, not one.
**Exceptions:**
- "datasource" used as an identifier
- "datasource" in a URL
- Use "data source" instead of "datasource" unless used as an identifier, in code, or as part of a URL.
@@ -260,7 +278,8 @@ Two words, not one.
#### display (verb)
*Display* is a transitive verb, which means it always needs a direct object.
_Display_ is a transitive verb, which means it always needs a direct object.
- Correct, active voice: Grafana displays your list of active alarms.
- Correct, but passive voice: Your list of active alarms is displayed.
- Incorrect: The list of active alarms displays.
@@ -287,6 +306,15 @@ Do not hyphenate when used as an adjective unless the lack of hyphen would cause
Do not hyphenate when it is used as a noun. For example: _Open source is the best way to develop software._
#### plugin, plug in
Two words if used as a verb, one word if used as a noun. Do not use _plug-in_.
**Examples**
- Plug in the appliance.
- Download the plugin.
#### setup, set up
Two words if used as a verb, one word if used as a noun.
@@ -296,7 +324,7 @@ Two words if used as a verb, one word if used as a noun.
- Set up the workspace.
- Initial setup might take five minutes.
### node_exporter, windows_exporter
#### node_exporter, windows_exporter
When referencing the Prometheus data source exporters, always use "node_exporter" and "windows_exporter" when referring to those tools.
@@ -307,10 +335,11 @@ When referencing the Prometheus data source exporters, always use "node_exporter
Two words, not one.
**Correct:** webserver
**Incorrect:** webserver
**Correct:** webserver
**Incorrect:** webserver
### MS SQL Server
Always use "MS SQL" when referring to MS SQL Server application.
Incorrect UI spellings will be corrected in a later version of Grafana.
@@ -23,20 +23,13 @@ Inspired by https://martinfowler.com/bliki/PageObject.html
Let's start with a simple [JSX](https://reactjs.org/docs/introducing-jsx.html) example containing a single input field that we want to populate during our E2E test:
We _could_ target the field with a CSS selector like `.gf-form-input.login-form-input` but that would be brittle as style changes occur frequently. Furthermore there is nothing that signals to future developers that this input is part of an E2E test. At Grafana, we use `aria-label` attributes as our preferred way of defining selectors instead of [`data-*`](https://mdn.io/docs/Web/HTML/Global_attributes/data-*) as they also aid in [accessibility](https://mdn.io/docs/Learn/Accessibility/What_is_accessibility):
The next step is to create a `Page` representation in our E2E framework to glue the test with the real implementation using the `pageFactory` function. For that function we can supply a `url` and `selectors` like in the example below:
@@ -45,7 +38,6 @@ The next step is to create a `Page` representation in our E2E framework to glue
exportconstLogin={
// Called via `Login.visit()`
url:'/login',
// Called via `Login.username()`
username:'Username input field',
};
@@ -67,11 +59,7 @@ Now that we have a `Page` called `Login` in our `Pages` const we can use that to
Our selectors are set up to work with both aria-labels and data-testid attributes. Aria-labels help assistive technologies such as screenreaders identify interactive elements of a page for our users.
A good example of a time to use an aria-label might be if you have a button with an X to close:
```
<button aria-label="close">X<button>
```
It might be clear visually that the X closes the modal, but audibly it would not be clear for example.
```
<button aria-label="close">Close<button>
```
The example might read aloud to a user as "Close, Close" or something similar.
However adding aria-labels to elements that are already clearly labeled or not interactive can be confusing and redundant for users with assistive technologies.
In such cases rather than adding unnecessary aria-labels to components so as to make them selectable for testing, it is preferable to use a data attribute that would not be read aloud with an assistive technology for example:
- [Proposal for removing or replacing Angular dependencies](https://github.com/grafana/grafana/pull/23048)
## Basic rules
@@ -194,12 +195,12 @@ _SASS styles are deprecated. Please migrate to Emotion whenever you need to modi
### Typing
In general, you should let Typescript infer the types so that there's no need to explicitly define type for each variable.
In general, you should let Typescript infer the types so that there's no need to explicitly define type for each variable.
There are some exceptions to this:
```typescript
// Typescript needs to know type of arrays or objects otherwise it would infer it as array of any
// Typescript needs to know type of arrays or objects otherwise it would infer it as array of any
// bad
conststringArray=[];
@@ -208,7 +209,7 @@ const stringArray = [];
conststringArray: string[]=[];
```
Specify function return types explicitly in new code. This improves readability by being able to tell what a function returns just by looking at the signature. It also prevents errors when a function's return type is broader than expected by the author.
Specify function return types explicitly in new code. This improves readability by being able to tell what a function returns just by looking at the signature. It also prevents errors when a function's return type is broader than expected by the author.
> **Note:** We don't have linting for this enabled because of lots of old code that needs to be fixed first.
@@ -216,18 +217,18 @@ Specify function return types explicitly in new code. This improves readability
@@ -147,7 +147,7 @@ The [controls addon](https://storybook.js.org/docs/react/essentials/controls) pr
#### Migrating a story from Knobs to Controls
As a test, we migrated the [button story](https://github.com/grafana/grafana/blob/master/packages/grafana-ui/src/components/Button/Button.story.tsx). Here's the guide on how to migrate a story to controls.
As a test, we migrated the [button story](https://github.com/grafana/grafana/blob/main/packages/grafana-ui/src/components/Button/Button.story.tsx). Here's the guide on how to migrate a story to controls.
1. Remove the `@storybook/addon-knobs` dependency.
**Themes are implemented in Typescript.** That's because our goal is to share variables between Grafana TypeScript and [Sass](https://sass-lang.com/) code. Theme definitions are located in the following files:
When implementing snapshot tests for components that use the `withTheme` HOC, the snapshot will contain the entire theme object. Any change to the theme renders the snapshot outdated.
To make your snapshot theme independent, use the `mockThemeContext` helper function:
If you need to pass a theme object to a function under test just import `createTheme` and call it without
any arguments.
```tsx
import{mockThemeContext}from'@grafana/ui';
import{MyComponent}from'./MyComponent';
import{createTheme}from'@grafana/data';
describe('MyComponent',()=>{
letrestoreThemeContext;
beforeAll(()=>{
// Create ThemeContext mock before any snapshot test is executed
// Make sure the theme is restored after snapshot tests are performed
restoreThemeContext();
});
it('renders correctly',()=>{
constwrapper=mount(<MyComponent/>)
expect(wrapper).toMatchSnapshot();
it('should work',()=>{
result=functionThatNeedsTheme(createTheme());
expect(result).toBe(true);
});
});
```
@@ -117,36 +172,5 @@ This section provides insight into frequently-asked questions.
`[_variables|_variables.dark|_variables.light].generated.scss` files are the ones that are referenced in the main Sass files for Sass variables to be available. **These files are automatically generated and should never be modified by hand!**
#### If you need to modify a _Sass variable value_ you need to modify the corresponding Typescript file that is the source of the variables:
This section describes limitations with Grafana's theming system.
### You must ensure `ThemeContext` provider is available in a React tree
By default all react2angular directives have `ThemeContext.Provider` ensured. But, there are cases where we create another React tree via `ReactDOM.render`. This happens in the case of graph legend rendering and the `ReactContainer` directive. In such cases theme consumption will fail. To make sure theme context is available in such cases, you need to wrap your rendered component with ThemeContext.Provider using the `provideTheme` function:
@@ -26,11 +26,10 @@ found. The dashboards are located in the `devenv/dev-dashboards` folder.
This command creates a docker-compose file with specified databases configured and ready to run. Each database has
a prepared image with some fake data ready to use. For available databases, see `docker/blocks` directory. Notice that
for some databases there are multiple images, for example there is prometheus_mac specifically for Macs or different
version.
for some databases there are multiple images with different versions. Some blocks such as `slow_proxy_mac` or `apache_proxy_mac` are specifically for Macs.
```bash
make devenv sources=influxdb,prometheus2,elastic5
make devenv sources=influxdb,prometheus,elastic5
```
Some of the blocks support dynamic change of the image version used in the Docker file. The signature looks like this:
@@ -46,17 +45,25 @@ make devenv sources=postgres,openldap,grafana postgres_version=9.2 grafana_versi
The grafana block is pre-configured with the dev-datasources and dashboards.
#### Jaeger
Jaeger block runs both Jaeger and Loki container. Loki container sends traces to Jaeger and also logs its own logs into itself so it is possible to setup derived field for traceID from Loki to Jaeger. You need to install a docker plugin for the self logging to work, without it the container won't start. See https://github.com/grafana/loki/tree/master/cmd/docker-driver#plugin-installation for installation instructions.
Jaeger block runs both Jaeger and Loki container. Loki container sends traces to Jaeger and also logs its own logs into itself so it is possible to setup derived field for traceID from Loki to Jaeger. You need to install a docker plugin for the self logging to work, without it the container won't start. See https://grafana.com/docs/loki/latest/clients/docker-driver/#installing for installation instructions.
#### Graphite
| version | source name | graphite-web port | plaintext port | pickle port |
An example of launch.json is provided in `devenv/vscode/launch.json`. It basically does what Makefile and .bra.toml do. The 'program' field is set to the folder name so VS Code loads all *.go files in it instead of just main.go.
## Troubleshooting
### Containers fail to start (Mac OS)
### Containers that read from log files fail to start (Mac OS)
If you are running Mac OSX, containers that read from the log files (e.g. Telegraf, Fileabeat, Promtail) can fail to start. This is because the default Docker for Mac does not have permission to create `grafana` folder at the `/var/log` location, as it runs as the current user. To solve this issue, manually create the folder `/var/log/grafana`, then start the containers again.
```
ERROR: for <service_name> Cannot start service <service_name>: OCI runtime create failed: container_linux.go:349: starting container process caused "process_linux.go:449: container init caused \"rootfs_linux.go:58: mounting ... merged/var/log/grafana: operation not permitted\\\"\"": unknown
ERROR: Encountered errors while bringing up the project.
sudo mkdir /var/log/grafana
```
If running Mac OSX the above error might be encountered when starting certain Docker containers that mount `/var/log/`. When first run this causes Docker to try to create the folder `/var/log/grafana` however by default Docker for Mac does not have permission to create folders at this location as it runs as the current user.
To solve this issue manually create the folder `/var/log/grafana` and give your user write permissions then try starting the containers again.
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.