* 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
(cherry picked from commit 442a6677fc)
Co-authored-by: gotjosh <josue@grafana.com>
* feat(catalog): change messaging if enterprise license is missing and add link
* test(catalog): fix failing PluginDetails test
(cherry picked from commit e21ecf237b)
Co-authored-by: Jack Westbrook <jack.westbrook@gmail.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
(cherry picked from commit cc7c54be0e)
Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>
* 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>
(cherry picked from commit cdcccfcc53)
Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>
* influxdb: moved queryUtils file to better place
* influxdb: more robust query-has-variables check
(cherry picked from commit 4da398014f)
Co-authored-by: Gábor Farkas <gabor.farkas@gmail.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
(cherry picked from commit aba7013ce5)
Co-authored-by: Tobias Skarhed <1438972+tskarhed@users.noreply.github.com>
* 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>
(cherry picked from commit 9494c2cd4f)
Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>
Repository protection will be enabled for grafana/grafana today
(cherry picked from commit e5f52a05f2)
Co-authored-by: Julien Duchesne <julienduchesne@live.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.
* Add fine-grained access control information to the features which now support it
* Mention the new permissions in Explore docs
(cherry picked from commit 2c810506a5)
Co-authored-by: Vardan Torosyan <vardants@gmail.com>
* only uninstall if update is possible
* add .
* update lingo for clarity
(cherry picked from commit 08a73a5291)
Co-authored-by: Will Browne <wbrowne@users.noreply.github.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
* 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
(cherry picked from commit 5f0bc252bc)
Co-authored-by: Nathan Rodman <nathanrodman@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>
(cherry picked from commit 180b1973e0)
Co-authored-by: idafurjes <36131195+idafurjes@users.noreply.github.com>
* feat(catalog): introduce a breadcrumb to plugindetails page
* refactor(catalog): use aria-labels and nav element for a11y breadcrumbs
(cherry picked from commit 99891e1a88)
Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>
* ColorPicker: return values as hex strings and update theme (#37173)
* 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>
(cherry picked from commit 3e35021f7e)
* ColorPicker: display colors as rgba in input (#37231)
* SpectrumPalette: change input to display rgba string
* fieldOverrides: remove extra hex string check
(cherry picked from commit 01e984c394)
* 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>
(cherry picked from commit 8d7e22e1bb)
Co-authored-by: Piotr Jamróz <pm.jamroz@gmail.com>
* Update current query when props change
* Remove managed state in GraphiteTextEditor
* Fix tests
(cherry picked from commit e8eb73f271)
Co-authored-by: Piotr Jamróz <pm.jamroz@gmail.com>
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.
(cherry picked from commit 75bd0bbacd)
Co-authored-by: Alexander Emelin <frvzmb@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
(cherry picked from commit b5f464412d)
Co-authored-by: David Parrott <stomp.box.yo@gmail.com>
* 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
(cherry picked from commit 04a196da4b)
Co-authored-by: Zoltán Bedi <zoltan.bedi@gmail.com>
This commit makes it possible to use the value string in
annotations and labels for alerts with "{{ $value }}"
(cherry picked from commit 2f4c893cf3)
Co-authored-by: George Robinson <85952834+gerobinson@users.noreply.github.com>
* 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
(cherry picked from commit c1963024ec)
Co-authored-by: Sergey Kostrukov <sergey@kostrukov.com>
* 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>
(cherry picked from commit ad1f792b8b)
Co-authored-by: yuwaMSFT2 <yuwa@microsoft.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 a translation of services/alerting/conditions. Main Changes:
- Work with types in SSE (series/number) which are data frames (no more null.Float).
- The query part from alerting/conditions is handled by SSE logic
- Convey / simplejson removed.
- Time range no longer part of "query" in the condition
* Loki: Label browser
- replaces stream cascader widget which made it hard to find relevant streams
- multi-step selection allows for selecting a couple of labels first, then find the relevant values
- supports facetting which makes impossible label combinations hard to choose
* Remove unused label hook
* Remove unused label styles
* Use global time range for metadata requests
* Preselect labels if not many exist
* Status and error messages
* Status fixes
* Remove unused import
* Added logs rate button
* Close popup when clicked outside (not working for timepicker :( )
* Change button label
* Get rid of popup and render browser inline
* Review feedback
* Wrap label values and prevent empty lists
Co-authored-by: Zoltán Bedi <zoltan.bedi@gmail.com>
* Use dataframe API for jeager
* Move types around
* Fix imports
* Simplify the data frame type
* Add comment
* Move the transform to separate file
* Fix logs timestamp
* Add/update tests for trace view
* Fix lint
* Add test to compare old and new format rendering
* Fix test imports
* Update data source tests
* Refactor: adds version column and fixes tests
* Chore: adds version check when patching the library panel
* Refactor: adds support for version in FrontEnd
* Make sure Metric field in Discord notification is never empty
Discord uniquely does not send the alert if the metric field is empty, which can happen in some cases, such as when the legend is {{hostname}}.
Signed-off-by: Levi Harrison <levisamuelharrison@gmail.com>
* Changed name of empty metric in Discord alert
Signed-off-by: Levi Harrison <levisamuelharrison@gmail.com>
* Refactor: adds permissions for library panel creation
* Refactor: checks folder permissions for patch requests
* Chore: changes after PR comments
* Refactor: adds permissions to delete
* Refactor: moves get all permission tests out of get all tests
* Chore: move out get all tests to a separate file
* Refactor: adds permissions to get handler
* Refactor: fixes a bug with getting library panels in General folder
* Refactor: adds permissions for connect/disconnect
* Refactor: adds permissions and tests for get connected dashboards
* Tests: adds tests for connected dashboards in General Folder
* LibraryPanels: Deletes library panels during folder deletion
* LibraryPanels: Deletes library panels during folder deletion
* Update pkg/api/folder.go
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* Update pkg/services/librarypanels/librarypanels_permissions_test.go
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* Chore: updates after PR comments
* Chore: forgot to change some function signatures
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* Refactor: adds permissions for library panel creation
* Refactor: checks folder permissions for patch requests
* Chore: changes after PR comments
* Refactor: adds permissions to delete
* Refactor: moves get all permission tests out of get all tests
* Chore: move out get all tests to a separate file
* Refactor: adds permissions to get handler
* Refactor: fixes a bug with getting library panels in General folder
* Refactor: adds permissions for connect/disconnect
* Refactor: adds permissions and tests for get connected dashboards
* Tests: adds tests for connected dashboards in General Folder
* Add percent of total to piechart legend
* Remove defaults
* Add label selector
* Fix multiselect option ui
* Add percent of total to piechart legend
* Add label selector
* add multiselect options ui
* change how pie chart labels are displayed
* Fixed right aligned values in legend
* added titles to display values so they show in table mode
* Move legend display value options to below other options
* Add addMultiSelect method to ui builder
* Use addMultiSelect on builder
* Use multiselect for the legend columns and update the panel test dashboard
* Remove explicit typing on addMultiselect and remove non existing properties from piechart story
* Add release tag
Co-authored-by: Torkel Ödegaard <torkel@grafana.org>
* Stop using transformation to tables
* Update datasource.ts to parse from dataframes
* Add test on transformToDataframe func
* Remove parseResponse and do the work inside parseToAnnotations method
* Name the dataframe after the RefID
* Small fix when mapping to annotation
* Add tests in annotation_query_test.go class
* Small fix in loop iteration
* Change for loop signature
* feat(dashboardsettings): migrate dashboard links EmptyListCTA to react
* feat(dashboardsettings): initial commit of links settings migration to react
* feat(dashboardsettings): add links form functionality
* refactor(dashboardsettings): separate out linksettings components and concerns
* Updates to links list
* Form improvements
* test(dashboardlinks): update links so tests run
* refactor: move _.move to arrayMove for testing purposes
* test(dashboardsettings): initial commit of link settings tests
* refactor(app): put back lodash move method for backwards compatibility
* test(dashboardsettings): add links settings tests
* style(dashboardsettings): camelcase constants
* chore(dashboardsettings): delete old angular links settings view
* fix(dashboardsettings): forceupdate links on submenuVisibilityChanged and correct imports
* chore: remove reference to old angular link settings components
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
Changes the time value of the response to be milliseconds, which I think is like the other data sources I have seen.
Also if it sees the timerange values as numbers, assumes they are unixMS (and come from expressions, or our new backend.TimeRange type). When this timerange is used, the request is sent to graphite with from and until as epoch timestamps
* TraceViewer: Fix show log marker in spanbar
* Revert changes and use UITooltip and UIPopover
* Change logmarker color
* e2e: wait for trace view
* Record cypress run ONLY FOR TESTING
* Move fixture to e2e
* Get details TEST ONLY
* test
* Use jaeger's theme instead of grafana's
* Revert "Record cypress run ONLY FOR TESTING"
This reverts commit 35c087b3c5.
* Revert "Move fixture to e2e"
This reverts commit fab88cc54c.
* Run post-friendly request with set method first
* Improve messaging, retry only when post and specific status code
* Add comments
* Fix backend
* Update public/app/plugins/datasource/prometheus/datasource.ts
* CallToActionCard: updates story from knobs to controls
* used better naming for ctaElement control
* Capitalise Story names
* moved some changes to a separate PR
* fixes CI frontend build issue
* Added new section Query a time series database by id
* Rearranged content.
* changed database to data source
* Updated note with the word Grafana
* fixed a few typos.
* Removed "time series" as per review.
* Update docs/sources/http_api/data_source.md
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
* Changes from Diana's review.
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
* Implement POST to specific endpoints and change POST as default
* Add tests for PromSettings
* Add tests to dataosurce.ts for new functionality
* Remove /label /series implementation
* Update public/app/plugins/datasource/prometheus/configuration/PromSettings.tsx
* Replace DataSourcesListItem with Card
* Add tests
* Remove unused styles
* Make card heading semi bold
* Make heading semi-bold
* Show type name instead of type id
* Fix key warning
* Update Card
* Fix tests
* Make typeName optional
* remove styling that was just a test
* Make typeName non-optional and fix tests
* Update list key
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
* Remove very old-versioned loki blocks
* Update prometheus block from 2.7.2 to latest
* Remove data sources in Grafana
* Fix e2e test not to intercept the whole url
Co-authored-by: Zoltán Bedi <zoltan.bedi@gmail.com>
* Add basic legend to the PieChart
* Remove console log
* Remove PieChartWithLegend and refactor PieChart a bit
* Use FALLBACK_COLOR
* Refactor PieChart
* Change back to [function]
* BarGuage: updated story from knobs to controls
* fixes type errors and disables unused controls
* update controls to support some BarGauge props
* changed addBarGaugeStory to component and removed closure
* cleaned up to be more readable
* more refactoring to be readable
* final touches...
* fixed disabled controls issue
* moved NOOP_CONTROL declaration to a seperate PR
* made some tweaks to the story names
* chore(grafana-toolkit): use workspace versions of grafana/ui and grafana/data
* chore: replace references to popperjs 1 typings with popperjs 2 typings
* Prettier formatting
* Grafana-UI: Add support for id and inputId props to Select
* Grafana-UI: Add aria-label to Select
* Grafana-UI: InlineField and Field get ID from inputId prop
For Select
* Fix tests using TagFilter
* Update Select prop documentation
* Update Field tests to use screen instead
* Fix the last few tests
* Fix disable bug by passing hide prop
* Make more universal fix
* Revert to original fix
* Update public/app/plugins/datasource/prometheus/components/PromQueryEditor.tsx
Co-authored-by: Zoltán Bedi <zoltan.bedi@gmail.com>
Co-authored-by: Zoltán Bedi <zoltan.bedi@gmail.com>
* SqlDataSources: Fixes the Show Generated SQL button in query editors
* No need to protect against duplicate events now that the event emitter is isolated for each editor
* LibraryPanels: Disconnect before connect during dashboard save
* Tests: fixed test
* Chore: updates after PR comments
* Chore: changes from context.Background() to c.Context.Req.Context()
* Chore: fixes lint issue
* First attempt
* Get rid of time range as config invalidation dependency
* GraphNG class refactor
* Get rid of DataFrame dependency from Plot component, get rid of usePlotData context, rely on XYMatchers for data inspection from within plugins
* Bring back legend
* Fix Sparkline
* Fix Sparkline
* Sparkline update
* Explore update
* fix
* BarChart refactor to class
* Tweaks
* TS fix
* Fix tests
* Tests
* Update packages/grafana-ui/src/components/uPlot/utils.ts
* Update public/app/plugins/panel/timeseries/plugins/ContextMenuPlugin.tsx
* GraphNG: unified legend for BarChart, GraphNG & other uPlot based visualizations (#31175)
* Legend experiment
* Nits
* break out new and edit
* changed model to match new model in backend
* AlertingNG: API modifications (#30683)
* Fix API consistency
* Change eval alert definition to POST request
* Fix eval endpoint to accept custom now parameter
* Change JSON input property for create/update endpoints
* model adjustments
* set mixed datasource, fix put url
* update snapshots
* run test response through converters
* remove edit and add landing page
* remove snapshot tests ans snapshots
* wrap linkbutton in array
* different approaches to massage data
* get instead of post
* use function to return instances data
* hook up test button in view
* test endpoint for not saved definitions
* function that return query options
* Chore: fixes strict error
* hide ng alert button
* typings
* fix setAlertDef error
* better message when you have queries but no data
* NGAlert: Refactoring that handles cleaning up state (#31087)
* Chore: some refactorings of state
* Chore: reduces strict null errors
Co-authored-by: Sofia Papagiannaki <papagian@users.noreply.github.com>
Co-authored-by: Sofia Papagiannaki <sofia@grafana.com>
Co-authored-by: Hugo Häggmark <hugo.haggmark@gmail.com>
Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>
* Chore(deps): Bump xorm.io/xorm from 0.8.1 to 0.8.2
Bumps xorm.io/xorm from 0.8.1 to 0.8.2.
Signed-off-by: dependabot[bot] <support@github.com>
* Fix limit for snapshots
* Fix limit for org and users
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
* Cfg: fix hidden users initialization
* add tests
* do not call isHiddenUser function for non-user permission
* do not call isHiddenUser function for non-user permission
Fixes behaviour of Notify that returns error when one of the dispatch
event return error, to maintain high availability, we should return error
when all dispatched events return error instead.
Fixes#30509
* Add configuration in ConfigEditor and default to 1000
* Show data in explore if any even if there is an error
* Update pkg/tsdb/influxdb/flux/executor.go
* Better handling of defaults
* Add test for runQuery to show data even with error
* Update public/app/store/configureStore.ts
Co-authored-by: Giordano Ricci <gio.ricci@grafana.com>
* Update public/app/plugins/datasource/influxdb/components/ConfigEditor.tsx
Co-authored-by: Ivana Huckova <30407135+ivanahuckova@users.noreply.github.com>
* Update tooltip
* Update input
* Lint fixes
* Update snapshots
* Update decorator tests
Co-authored-by: Giordano Ricci <gio.ricci@grafana.com>
Co-authored-by: Ivana Huckova <30407135+ivanahuckova@users.noreply.github.com>
* Don't add {} to non-metrics starting with quotes
* Fix for using template variables
* Fix adding of filter to timerange
* Fix adding of filter to labels provided with group modifier
* Fix adding of filters to Grafana's variables
* Shorten tests
* Refactor and split
* WIP: Add dedup functionality to logs panel
* Simplify, clean up
* Change ordering of customizations based on how it is in Explore
* Update public/app/plugins/panel/logs/LogsPanel.tsx
Co-authored-by: Giordano Ricci <gio.ricci@grafana.com>
* Update public/app/plugins/panel/logs/LogsPanel.tsx
Co-authored-by: Giordano Ricci <gio.ricci@grafana.com>
Co-authored-by: Giordano Ricci <gio.ricci@grafana.com>
* Drone: Make sure CDN upload is ok before pushing docker images
* Trying to simplify logic
* Snake case
* Only depend on cdn upload in release mode
* Rename and use util function where we can
* removing the cdn dependency
The upgrade notes for Grafana 7.3 and Docker says that The Grafana Docker
image runs with the root group (id 1) which is wrong. It should be group (id 0).
Which issue(s) this PR fixes:
Fixes#30953
* CDN: Fixing drone CI config
* was in wrong dir when I executed command
* removed whitespace
* Update path
* Update Drone master and enterprise piplelines with CDN Upload
* Update test
* removed whitespace
* Go back to public folder defined
* updated build-pipeline
* Updated drone
* wrong version
* DashboardSettings: Update to new form styles
* Improve header margin and fixing issue in permissions tab
* Updated
* Switch to radio
* Remove unused import
* BarGauge: Increase min value width and fix height when setting manual text size
* updated snapshot
* Big improvement to bar gauge value sizing and fixing table gauge sizing
* removed unused const
* added a unit test
* feat(dashboard): initial commit of general settings migration to react
* fix(dashboardsettings): force update of general settings when selects change
* feat(dashboardsettings): initial commit of delete dashboard button and modal
* feat(dashboardsettings): introduce useDashboardDelete hook
* feat(dashboardsettings): add tags and editable inputs
* refactor(dashboardsettings): fix typescript error in general settings
* refactor(dashboardsettings): use grafana-ui form components for general settings
* refactor(dashboardsettings): use ConfirmModal and move provisioned modal to own component
* refactor(dashboardsettings): revertDashboardModal uses ConfirmModal
* test(autorefreshintervals): remove renderCount prop to fix test
* test(dashboardsettings): put back aria-label for e2e tests
* chore(dashboardsettings): remove redundant generl settings angular code
* test: change references to now deleted SettingsCtrl to GeneralSettings
* refactor(dashboardsettings): swap out switch for inlineswitch component
* chore(timepickersettings): remove timePickerSettings angular directive definition
* feat(dashboardsettings): add tooltips, fix description field name
* refactor(dashboardsettings): remove redundant await
Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
* refactor(usedashboarddelete): clean up
Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
* update interval to fix no unit
* fix bug
* update with new method
* format go
* add test
* change test method to add test error nil
* add simplejson and model package
* change json format
* add parentheses
* add simplejson to function
* change mode to model
* move assert import package
* add one enter to avoid goimport error
* change to test case
* Graph: Fixes so graph is shown for non numeric time values
* Tests: changes times to UTC
* Tests: forgot one value in time array
* GraphNG: make time series panel work with string time stamps (#30981)
* Make Time series panel work with data that time is represented as string
* Map to for
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
Grafana [v7.2.0-beta2](https://github.com/grafana/grafana/releases/tag/v7.2.0-beta2) brought support for `login_maximum_inactive_lifetime_duration` and `login_maximum_lifetime_duration` to replace the older way of specifying the same flavor of timeouts (`login_maximum_inactive_lifetime_days` and `login_maximum_lifetime_days`). Unfortunately, this improvement did not make it to `configuration.md`.
The suggested changes reflect the current state of `conf/defaults.ini`.
* Make value mappings corectly interprete numeric-like strings
* More tests
* Update packages/grafana-data/src/utils/valueMappings.ts
* Update packages/grafana-data/src/utils/valueMappings.ts
Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>
* Fix issue detected by singlestat test
Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>
When the user session expires, and the 401 triggers a page reload to get the user to the login page, ChangeTracker will interfer. By setting the user as logged out in the context when the session is timed out, we can ignore the changes in ChangeTracker.
* Updated
* DataSourceSettings: Adds info box and link to Grafana Cloud
* Updated wording
* Less words
* use variables
* Fixing ts issues
* fixed import
* break out new and edit
* changed model to match new model in backend
* AlertingNG: API modifications (#30683)
* Fix API consistency
* Change eval alert definition to POST request
* Fix eval endpoint to accept custom now parameter
* Change JSON input property for create/update endpoints
* model adjustments
* set mixed datasource, fix put url
* update snapshots
* remove edit and add landing page
* remove snapshot tests ans snapshots
* wrap linkbutton in array
Co-authored-by: Sofia Papagiannaki <papagian@users.noreply.github.com>
Co-authored-by: Sofia Papagiannaki <sofia@grafana.com>
* Created new topic.
* Updated retart topic with windows, macos, Linux and Docker sections. Also, updated enterprise topic "sctivate license".
* Added some relrefs to the install introduction page.
* Adding changes from reviews.
* More changes from review.
* Corrected some syntax issues.
* Introduce PluginRequestValidator abstraction with a NoOp implementation
* Update PluginRequestValidator abstraction to use the dsURL instead
* Inject PluginRequestValidator into the HTTPServer and validate requests going through data source proxy
* Inject PluginRequestValidator into the BackendPluginManager and validate requests going through it
* Validate requests going through QueryMetrics & QueryMetricsV2
* Validate BackendPluginManager health requests
* Fix backend plugins manager tests
* Validate requests going through alerting service
* Fix tests
* fix tests
* goimports
Co-authored-by: Leonard Gram <leo@xlson.com>
* feat(grafana-ui): add an escape key listener to Modal
* Update packages/grafana-ui/src/components/Modal/Modal.tsx
Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
* feat(grafana-ui): add closeOnEscape prop to control Modal behaviour
Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
* Add dev env block for influx2
* Add http settings to influx config
* Update devenv/docker/blocks/influxdb2/docker-compose.yaml
Co-authored-by: Sofia Papagiannaki <papagian@users.noreply.github.com>
Co-authored-by: Sofia Papagiannaki <papagian@users.noreply.github.com>
* Chart/Tooltip: added theme variables and refactored style declaration
* added some changes
* removed useStyle hook since we're not using themes variables
* Added useStyle back since it memoizes the style generation
* add compile variable in tooltip link
* test(link_srv): introduce getAnchorInfo test
* test(link_srv): introduce tests for getLinkUrl
* test(link_srv): refer to anchorInfo.url rather than hardcode expected
Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>
* Created new topic on tracing capability and began breaking down and re-org.
* This commit fixed a bunch of broken relrefs along with other changes.
* More changes.
* Checkin changes.
* Check in changes.
* More changes.
* More changes.
* Updated file path.
* Updated image path and more content reorg.
* Update docs/sources/explore/_index.md
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
* Adding suugestions from review.
* Some more changes from review.
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
* GrafanaUI: Add a way to persistently close InfoBox
InfoBox and FeatureInfoBox can take up a lot of screen realestate. This makes it easy to let the user close the boxes.
* Migrate InfoBox story to controls
* merged conflicts
* added and utilised useStyle hooks
* Fixes snapshot test
* FormField: added grow property to component
* added a carriage return to index.scss
* properly sort props so the required props are at the top
* removed the grow props since it's not used
* fixes frontend test- I hope
Fixes so that the warning WARN Failed to close
stream logger=plugins.backend err="cannot
close a closed stream" is not logged every
time calling a resource.
* Measure transformation number and elapsed time
* Change histogram to summary
* Apply suggestions from code review
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
* TableInputCSV: migrated styles from sass to emotion
* placed the getSyles function at the end of the file
* made some changes
* fixes small nit
* fixes small nit
* replaced classNames with emotions cx function
* Replaced textarea with TextArea component
* updated some changes
* removed return type annotation
* fixed small import nit
* CDN: Initial poc support for serving assets over a CDN
* Minor fix
* added build path and test
* fix lint error
* Added edition to cdn path
* Move master builds to a separate path
* Added error handling for the url parsing, changed setting name, and added docs
* Updated sample.ini
* Some property renames
* updated
* Minor update to html
* index template improvements
* 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>
* Added ContentDeliveryPrefix to Licence service
* updated docs
* Updated test mock
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
Converts the core testdata data source to use the SDK contracts and by that
implementing a backend plugin in core Grafana in similar manner as an external one.
Co-authored-by: Will Browne <will.browne@grafana.com>
Co-authored-by: Marcus Efraimsson <marefr@users.noreply.github.com>
Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
PLUS
- width prop isn't actually used and thus might give users of this component the wrong idea, so I removed it from the type (and in `DataSourceHttpSettings`)
- Added storybook props table
* bump cypress to 6.3.0
* fix inspect-drawer spec
* fix panelEdit_base spec
* fix select-focus spec
* Apply suggestions from code review
Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>
* add be.visible assertion to new-query-variable spec to avoid flakiness
* increase waits in new-query-variable spec to avoid flakiness
* increase waits in new-query-variable spec by another 500
* remove be.visible assertion added before
* Chore: trying to fix flakiness
* skip the new-variable-query e2e test
* Chore: refactor so we might avoid flakiness
* Revert "skip the new-variable-query e2e test"
This reverts commit 203c1875c2.
Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>
Co-authored-by: Hugo Häggmark <hugo.haggmark@gmail.com>
* Change to introduction section.
* Checkin changes.
* Check in changes.
* Updated heading levels for better readability.
* Checkin changes.
* Broke down topic and fixed relrefs. Also, resized images.
* Added one more relref from preconfig dashboards to main topic.
* Adding Eric's changes.
* Added alias.
* Updated alias with correct syntax, also updated description typo for "Preconfigured dashboards"s
* Checking in changes from Diana.
* Update docs/sources/datasources/google-cloud-monitoring/_index.md
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
* One last change.
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
* CustomScrollbar: migrated styles from sass to emotion
* fixes frontend test
* updated changes
* fixed page props and applied changes to all occurences
* moved the getStyles function to the bottom of the file
* made some changes
* fixed snapshot test
* Revert "Merge branch 'refactor-customscrollbar-30354' of https://github.com/grafana/grafana into refactor-customscrollbar-30354"
This reverts commit c45ee30b6b297991a1628e9b21c4121dc78e376c, reversing
changes made to d2645534e3.
* improved props name
* made use of theme variables for style consistency
* fixed snapshot test and updated some theme changes
* removed hover effects from customScrollbar style
* made some changes
* updated some changes
* added label to class names
* changed to a functional component and improved styling
* fixes snapshot test
* fixes small nit
* minor tweaks
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
* Explore: Replaces navbar-button and overriden explore button css classes with ToolbarButton and cleans up scss & markup, removes ResponsiveButton
* Change live button text when paused
* For the dashboard toolbar button I need a transparent button so I refactored the states/variants into a new ToolbarButtonVariatn
* PageToolbar wip
* Progress
* Prgress
* Minor progress
* Fixed back button and responsive titles
* Fixed tv mode
* Updated
* support tv modes and playlist
* more progress
* Fixing lots of view states and responsive features
* Minor fixes
* review fixes
* Fixes to e2e tests
* Review fixes
* AlertingNG: pause/unpause definitions via the API
* Apply suggestions from code review
Co-authored-by: Will Browne <wbrowne@users.noreply.github.com>
* Enable pausing/unpausing multiple definitions
Co-authored-by: Will Browne <wbrowne@users.noreply.github.com>
* Usage Stats: Remove unused method for getting user stats
This was used in enterprise codebase, but is not longer in use, thus can be safely removed.
* Force refresh user stats in tests
* Grafana/UI: Unit picker should not set a category as a unit
When clicking categories for units the category is set as the unit until a leaf node is selected.
This change exposes the changeOnSelect property from rc-cascader and sets it to false for the unit picker.
Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>
* Grafana/UI: Add disable prop to Segment
SegmentSync, SegmentAsync and SegmentInput had the disable prop inherited from HTMLProp but it did not disable the component. The disable prop should now disable the component.
* Use InlineLabel instead of span and remove some sass-classes in Segments
* Change MetricsQueryEditor test to reflect new layout of AsyncSegment
* Use useStyles hook to get themed styles for segment inputs
Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
* If error - catch and show, if no logs - return null
* Refactor LogsContainer to use ConnectedProps
* Fix typescript error
* Remove no logs check
* Include review feedback
* Add SplitOpen type to createSpanLink and TraceView
* WIP: Using new components
* Progress
* Everything looks to be working
* Explore: Replaces navbar-button and overriden explore button css classes with ToolbarButton and cleans up scss & markup, removes ResponsiveButton (#30571)
* Explore: Replaces navbar-button and overriden explore button css classes with ToolbarButton and cleans up scss & markup, removes ResponsiveButton
* Change live button text when paused
* Fixed story
* For the dashboard toolbar button I need a transparent button so I refactored the states/variants into a new ToolbarButtonVariatn
* Changing my mind on the transparent variant
* review fixes
* Review fixes
* ButtonSelect: Trying to rewrite the button select to use ToggleButtonGroup & Menu
* minor update
* Progress
* Updated
* Moving all the explore scenarios into the refresh picker component
* Minor fixes
* Fixed responsive part of run button
* More minor fixes
* typescript fix
* Update packages/grafana-ui/src/components/Icon/Icon.tsx
Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
* Update packages/grafana-ui/src/components/Menu/Menu.tsx
Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
* Review feedback fixes and more
* Fixes small ts issue
* Updated return to dashboard button and tests, moved ButtonSelect out of LegacyForms
* fixed ts issue
* Fixed test
Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
* transform state to what the api expects
* add expr prop to dataquery
* Add evalutate field
* add refid picker to options
* minor fix to enable save
* fix import
* more fixes after merge
* use default datasource if not changed
* replace name with title
* Change name in ui as well
* remove not used loadDataSources function
* prettier fixes
* look up datasource
* correct datasource per query model
* revert dataquery change, use expressionid const
* fix for type
* fix faulty const
* description readonly
* Modal: Admin: Fixes so whole org drop down is visible
* Tests: fixes failing tests
* Chore: cleans up the return type
* Chore: changes after PR comments
* Chore: changes after PR comments
* PanelOptions: Refactoring on applying panel and field options from PanelModel
* Progress
* Filtering out props
* downgraded prettier
* Fixes
* Initial simple remember and restore for custom and overrides
* clearing custom options and overrides and restoring works
* actually use the function
* Added type for options cache
* minor fix
* Updated with new prettier
* Added old field config to panel type change handler
* Update public/app/features/dashboard/state/getPanelOptionsWithDefaults.test.ts
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
* Dashboard: Remove template variables option and update style of ShareModal (#29191)
* Simplified design
* Changed to text area component for embed and replaced select with RadioButtonGroup
* Use primitive string instead of SelectableValue in the states
* Changed embed html TextArea to writable and added a copy to clipboard button
* Added some space between the buttons on the snapshot tab and removed unnessecary FieldSet elements
* Add descriptions to the tabs that were missing descriptions
* Capitalization of theme names
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
* update go-mssqldb package
* mssql: support for Windows integrated security
Adds a dropdown to the config page to choose between
SQL Server auth and Windows auth. If the login/username
is empty then the go-mssqldb driver will use single sign on
(Windows integrated security) if on Windows.
* mssql: update ds - don't ignore the user column
* Expressions: remove feature toggle, add experimental badge
* Make button only show for backend and mixed data sources
Co-authored-by: Peter Holmberg <peter.hlmbrg@gmail.com>
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
* Go program to output openapi
* Fix number type syntax
Resolves error: 'unsupported op for number &'
* Render just the schemas
* Use args as entrypoints and add test
* Update README, tidy go.mod
* Enforce unique alert definition title/uid per org
* Remove print statement from test
* Do not allow empty alert definition titles
* update error message on dup title
* also add title error to update
* CamelCase json properties
* Add test for title unique enforcement in updates
Co-authored-by: kyle <kyle@grafana.com>
* Auth: add error for expired token
* Auth: save token error into context data
* Auth: send full user and req context to CreateToken
* Auth: add token ID in context
* add TokenExpiredError struct
* update auth tests
* remove most of the changes to CreateToken func
* clean up
* Login: add requestURI in CreateToken ctx
* update RequestURIKey comment
* Add GraphView component
* Add service map panel
* Add more metadata visuals
* Add context menu on click
* Add context menu for services
* Fix service map in dashboard
* Add field proxy in explore linkSupplier
* Refactor the link creation
* Remove test file
* Fix scale change when view is panned
* Fix node centering
* Don't show context menu if no links
* Fix service map containers
* Add collapsible around the service map
* Fix stats computation
* Remove debug log
* Fix time stats
* Allow string timestamp
* Make panning bounded
* Add zooming by mouse wheel
* Clean up the colors
* Fix stats for single trace graph
* Don't show debug config
* Add more complex layout
* Update layout with better fixing of the root nodes
* Code cleanup
* Change how we pass in link creation function and some more cleanup
* Refactor the panel section into separate render methods
* Make the edge hover more readable
* Move stats computation to data source
* Put edge labels to front
* Simplify layout for better multi graph layout
* Update for dark theme
* Move function to utils
* Visual improvements
* Improve context menu detail
* Allow custom details
* Rename to NodeGraph
* Remove unused dependencies
* Use named color palette and add some fallbacks for missing data
* Add test data scenario
* Rename plugin
* Switch scroll zoom direction to align with google maps
* Do some perf optimisations and rise the node limit
* Update alert styling
* Rename function
* Add tests
* Add more tests
* Change data frame column mapping to use column names
* Fix test
* Fix type errors
* Don't show context menu without links
* Add beta status to panel
* Fix tests
* Changed function to standard methods
* Fix typing
* Clean up yarn.lock
* Add some UI improvements
- better styling of the zoom buttons
- disable buttons when max reached
* Fix panel references after rename
* Add panel icon
* Safely skipping overrides on missing properties.
* Added test and missing element key.
* added possibility to remove the missing property.
* Minor UI change
* Fix test
* simplify a bit
* Fixed test
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
* Fix query preview add tabs to options
* break out tabs to components
* add refresh button
* minor things after PR review
* hide queries
* Add simple error screen if there's an error
* dropdown with different frames
* move onrunqueries to redux
* cleanup
* show actual error
* refactor(dashboard): remove redundant directive code from SaveDashboardAsButton
* feat(dashboard): initial commit of rendering version history with react
* feat(dashboard): append versions, use historySrv, UI as functional components
* feat(dashboard): initial commit of versions settings diff view
* refactor(historylist): remove code related to listing versions
* refactor(dashboard): use angular directive to render version comparison
* refactor(dashboard): clean up versions settings
* refactor(dashboard): move version history UI components into own files
* refactor(dashboard): update typings for version history react components
* feat(dashboard): initial commit of react revert dashboard modal
* test(dashboardsettings): clean up historylistctrl tests
* chore(dashboardsettings): remove unused state variable
* test(dashboardsettings): initial commit of VersionSettings component tests
* feat(grafana-ui): add className concatenation on Checkbox label
* Apply suggestions from code review
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
* test(dashboardsettings): add more tests for Versions Settings react component
* test(dashboardsettings): add test to assert latest badge in Version history table
* fix(dashboardsettings): pass string to getDiff instead of react event object
* test(dashboardsettings): remove failing test from versions settings
* Moved scroll area to content, and fixed colors
* Update public/app/features/dashboard/components/DashboardSettings/VersionsSettings.test.tsx
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
* style(dashboardsettings): add new lines to versions settings tests
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
* ToolbarButton: New emotion based component to replace all navbar, DashNavButton and scss styles
* Component ready for use
* Dam dam dam
* Starting big button design update
* Tried to use main button component but failed
* Minor fix
* Updates
* Updated
* Update packages/grafana-ui/src/components/Button/Button.tsx
Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
* Update packages/grafana-ui/src/components/Button/ButtonGroup.tsx
Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
* Updated to use spacing base
* Button updates
* Removd unused import
* Remove unused import
* Use correct theme variable for border-radius
Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
Replace hard-coded `GF_ENTERPRISE_LICENSE_TEXT` with a
`map[string]string` to allow the licensing service to allow sending any
environment variable through to the plugins for licensing purposes.
* cloud monitoring mql support
* reduce nesting
* remove resource type from deep link since. its removed for two reasons. first of all it is not needed for the link to work. secondly, by adding the resource type, the the link will differ from the query in grafana which I think is misleading
* use frame.meta.executedQueryString instead of legacy meta
Co-authored-by: Erik Sundell <erik.sundell87@gmail.com>
* Pass skipCache from context
* Use macaron Params instead of ParamsEscape for UIDs
* Modify queries and transform to get datasource UIDs
* Update github.com/grafana/grafana-plugin-sdk-go to v0.83.0
* Fix typos
* Query exemplars API
* Add link to traceID
* Update exemplar to show more information
Reduce exemplars density
* Fix typos
* Query exemplars API
* Add link to traceID
* Update exemplar to show more information
Reduce exemplars density
* Update GraphNG legend type
* Show new graph component in Explore
* Add exemplar annotation a design update
* Graph panel not to show red line annotation
Exemplar plugin to use y value
* Address review comments
* Density filter for exemplars
* Update schema of exemplars
* Density filter with y-value sampling
* Enforce axis scales to include 0
* Changes after merge with master
* Show metrics when there is no result
* Decorators tests fix
* ExemplarMarker to receive component prop
* Remove context menu from explore graph
* Add color to graph
* Update explore graph panel
* Update graph config to use default values
* Fix data source tests
* Do not show exemplars outside of graph
* Add exemplars switch
* Fix typos
* Add exemplars query only when enabled
* Show graph in explore without filling it
* Update exemplars plugin y value scale selection
* Update tests
* Add data source picker for internal linking
* Increase pointSize for better visibility
* Fix explore e2e test
* Fix data link title variable interpolation
* Use new switch component in PromExemplarField
* Move FieldLink component to new file
* Convert exemplar to datalink
* Add legend toggling logic to Explore
* Add legend toggling to Explore
* Address Ivana's feedback
* Address Andrej's comments
* Address Gio's feedback
* Add tests for result_transformer
* Fix eslint issues
* Change sampler formula for better readability
Co-authored-by: David Kaltschmidt <david@leia.lan>
Co-authored-by: David Kaltschmidt <david@leia.fritz.box>
Co-authored-by: David Kaltschmidt <david.kaltschmidt@gmail.com>
* Chore: moves common and response into separate packages
* Chore: moves common and response into separate packages
* Update pkg/api/utils/common.go
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* Chore: changes after PR comments
* Chore: move wrap to routing package
* Chore: move functions in common to response package
* Chore: move functions in common to response package
* Chore: formats imports
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* feat(tablepanel): add migration button to old table panel config
* feat(tablepanel): migrate old table transformations
* feat(tablepanel): migrate old styles to config overrides
* feat(tablepanel): migrate catch all style override to panel defaults
* refactor(tablepanel): clean up typings
* refactor(tablepanel): base threshold as -Infinity
* feat(tablepanel): migrate align to new table config overrides
* feat(tablepanel): migrate links to new table overrides
* refactor(tabelpanel): clean up threshold migrations
* feat(tablepanel): introduce table transform to merge
* feat(tablepanel): add note informing user to manually update links with cell values
Adds support to the terms aggregation for ordering by percentiles and extended stats.
Closes#5148
Co-authored-by: Giordano Ricci <grdnricci@gmail.com>
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
* StatsPickerEditor - add more config to the options ui
* Show calcs in the legend
* Refactor the way legend items are created
* Progress on refresh
* Migration update
* Use human-readable names in the legend stats
* Disable pointer cursor in table header
* ReleaseNotes: Updated changelog and release notes for 7.3.7
* Changelog: set everything as bug fixes
Co-authored-by: Agnès Toulet <agnes.toulet@gmail.com>
* Convert Cloud Monitoring (Stackdriver) Datasource to use Dataframes #29830
* add deeplink into config
* omggggggggggggggg this deeplink works!
* move unit to the backend part
* remove unit from frontend
* only set the config fields[1] for deeplink and unit
* refactory + fix some test
* remove frontend test for unit
* adding backend test for unit mapping
* resolve review
* rewrtie unit logic to do exactly the same as frontend filter
* refactory
The current backend code doesn't honor the minimum interval set in the UI for alerts using
the Elasticsearch data source. This means that the data the alerts are triggering against
will never match the data in the visualization if auto is used in the date histogram as interval.
This fixes the problem to make sure that date histogram auto interval is set according to
min interval set in UI for the query or fallback to data source min interval setting.
Fixes#22082
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
* Auth: Add Content-Type to SigV4 header allowlist
* add MT headers to permitted headers
* add Kibana API header to allowlist
* add Content-Length header to allow list
* Update prometheus.md
* Update docs/sources/datasources/prometheus.md
Co-authored-by: Dan Cech <dcech@grafana.com>
* Update prometheus.md
Co-authored-by: Dan Cech <dcech@grafana.com>
Example `ec2_instance_attribute(default, InstanceId, { 'tag:Environment': ['production'] });` will cause `SyntaxError: Unexpected token ' in JSON at position 2`
* get meta data from dataframe meta
* gmdMeta is not used anymore
* wip: move deep link creation to backend
* Refactor backend. Remove not used front end code
* Unit test deep links. Remove not used frontend tests
* remove reference to gmdmeta
* fix goimports error
* fixed after pr feedback
* more changes according to pr feedback
* fix lint issue
* fix bad math expression check and fix bad test
* Decrease nesting
* put link on first data field only
* Legends: Refactoring and rewrites of legend components to simplify components & reuse
* Removed onSeriesAxisToggle
* More removal of onSeriesAxisToggle and storybook improvements
* Added story with legend values
* Move table legend styles from inline to defined in stylesFactory
* Update styles
* Change to circle
* Updated style to fat line
* Rename to VizLegend
* More renamed and fixes / polish
* Removed imports
* Minor change
* Updates
* Updates
* Added 2 image links.
* Fixed a typo
* Fixed one more typo
* Added images to the "Share a panel" and "Share a dashboard" topics.
* Updated title of the section on panel embed.
* Update docs/sources/sharing/share-dashboard.md
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
* Fixed numbering.
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
* WIP, works but need to do more testing
* Update solution
* Fix autocomplete with metrics
* Update public/app/plugins/datasource/prometheus/language_provider.ts
* Update public/app/plugins/datasource/prometheus/language_provider.ts
* Change test for new functionality
* Elasticsearch: Add support for serial diff pipeline aggregation
* Removing settings transsforms
* Removing unused deps
* removing unused dep
* Fixing type in test
* Adding backend support for serial_diff
* Change API to expect UIDs instead of ID
* Remove unnecessary transactions
When only one query is executed
* Modify API responses
* Cleanup tests
* Use globally orgID and UID for identifying alert definitions
* Failed to load application files message improvement IE11
Improvement of the error message with information about the end of support of Internet Explorer 11.
* Update public/views/index-template.html
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
Usage Stats: Calculate concurrent users as a histogram
Metric will help to understand if users are sharing their credentials or using one account for concurrent sessions. This will help to make more informed decisions when enforcing any license limitations on credentials usage.
* fall back to any architecture when getting plugin's checksum
* Update pkg/cmd/grafana-cli/commands/install_command.go
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* remove typo
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* use sha256 checksum instead of md5
* Chore: Rewrite ldap login test to standard library (#29998)
* Chore: Rewrite ldap login test to standard library
* Preserve original ldap enabled setting after test
* Chore: Rewrite models alert test to standard library (#30021)
* Chore: Rewrite models dashboard acl test to standard library (#30022)
* Chore: Rewrite models dashboards test to standard library (#30023)
* Chore: Rewrite login auth test to standard library (#29985)
* Chore: Rewrite login auth test to standard library
* Use assert.Empty when empty string expected
* Chore: Rewrite brute force login protection test to standard library (#29986)
* Update pkg/cmd/grafana-cli/services/api_client.go
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* Update pkg/cmd/grafana-cli/services/api_client.go
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* use sha256 checksum instead of md5
* Update pkg/cmd/grafana-cli/services/api_client.go
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* Update pkg/cmd/grafana-cli/services/api_client.go
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* grafana-cli: Remove MD5
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
Co-authored-by: Emil Hessman <emil@hessman.se>
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* SQLStore: customise the limit of retrieved datasources per organisation
* update all suggestions regarding nil or 0 as default
* Apply suggestions from code review
Co-authored-by: Emil Tullstedt <emil.tullstedt@grafana.com>
* correct default.ini description + adding unittest
* Apply suggestions from code review
Co-authored-by: Sofia Papagiannaki <papagian@users.noreply.github.com>
* modify unittest name
Co-authored-by: Emil Tullstedt <emil.tullstedt@grafana.com>
Co-authored-by: Sofia Papagiannaki <papagian@users.noreply.github.com>
* Add fake TeamSyncService
* Change SyncTeams dispatch to direct method call
* Remove SyncTeamsCommand struct
* Move TeamSyncService to a separate package
* Remove context from SyncTeams args
* Add comments to teamsyncgroup package
Co-authored-by: Emil Tullstedt <emil.tullstedt@grafana.com>
* Replace TeamSyncService with TeamSyncFunc
* Remove unnecessary error check
* Add a test
* Fix test input
Co-authored-by: Emil Tullstedt <emil.tullstedt@grafana.com>
* PanelEvents: Isolate angular events from panel model events, use new Event patterns
* Removing some events that are not longer needed
* Updated DashboardModel
* Update
* Review fixes
* PanelLibrary: Adds get to the API
* Refactor: adds tests for get and getAll and cleans up other tests
* Refactor: changed name on DTO
* Update pkg/services/librarypanels/api.go
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* Update pkg/services/librarypanels/database.go
* Dashboard: Started migrating dashboard settings
* Restore general settings from angular
* Use react permissions component
* feat(dashboard): add react LinksSettings wrapper for dash-links-editor
* feat(dashboard): add react VersionsSettings wrapper for gf-dashboard-history
* refactor(dashboard): replace DashboardPermissions connectWithStore with connect
* chore(dashboard): folderInfo as undefined
* feat(dashboard): initial commit of dashboard settings json editor
* feat(dashboard): introduce save json functionality
* chore(dashboard): delete obsolete imports
* feat(dashboard): add save and save as buttons to settings nav
* feat(dashboard): add react wrapper for annotations settings
* chore(dashboard): put back canDelete for general settings delete button
* Make editable
* Remove makeEditable from SettingsCtrl
* feat(dashboard): show json editor save button if canSave
* refactor(dashboard): move hasUnsavedFolderChange to dashboard.meta
* feat(dashboard): render hasUnsavedFolderChange view in permissions settings
* feat(dashboard): reset hasUnsavedFolderChange on settingg save success
* feat(dashboard): refresh route on sucessful settings save
* test(dashboard): update snapshots
* refactor(dashboard): automatically infer connected props for dashboard permissions
* refactor(dashboard): give dashboard versions checkboxes some padding
* Update public/app/types/folders.ts
Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>
Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>
Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>
* Always use cache: stop passing skipCache among ngalert functions
* Add updated column
* Scheduler initial draft
* Add retry on failure
* Allow settting/updating alert definition interval
Set default interval if no interval is provided during alert definition creation.
Keep existing alert definition interval if no interval is provided during alert definition update.
* Parameterise alerting.Ticker to run on custom interval
* Allow updating alert definition interval without having to provide the queries and expressions
* Add schedule tests
* Use xorm tags for having initialisms with consistent case in Go
* Add ability to pause/unpause the scheduler
* Add alert definition versioning
* Optimise scheduler to fetch alert definition only when it's necessary
* Change MySQL data column to mediumtext
* Delete alert definition versions
* Increase default scheduler interval to 10 seconds
* Fix setting OrgID on updates
* Add validation for alert definition name length
* Recreate tables
* Elasticsearch: use time range from queries or default one
* Fix tests
* Fix language provider tests
* Elasticsearch: remove timeSrv dependency for logs context (#29841)
* Elasticsearch: remove timeSrv dependency for logs context
* Add tests & slighlty improve getIndexList
Co-authored-by: Elfo404 <gio.ricci@grafana.com>
It's not possible to stop an image, you can only start/stop container. I know it's just a little mistake and it sounds a bit like crumb cracker but your description is not correct.
Adding an interface type for usage stats service allows us to not depend on the implementation outside of the package, for example when testing we can easily mock the service
* Chore: Remove internal import for QueryEditorRow
* WIP inline forms fixes
* Added segment group component
* Added component status doc tag
* Chore: add as prop to InlineLabel to control rendered element (#29876)
* Use div for InlineLabel & fix iconbuttons positioning
Co-authored-by: Elfo404 <gio.ricci@grafana.com>
The change allows to add external, additional metrics which will be reported with the rest of hardcoded metrics, allowing to add metrics without a need to change the service itself.
* Increase folder name size in search dashboard
* Use new fontsize in dashboard list panel as well
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
* Remove unnecessary deduplication
* Remove dedup test as we are not doing dedup on all logs anymore
* Create unique ids in Loki
* Fix comment
* Fix comment
* Store prev response uids in usedUids
* Revert "Store prev response uids in usedUids"
This reverts commit 05c496e2a8.
* Add comment
* Fix using of newlines in detected fields
* Wrapping depends on main selection
* Update props to be optional
* Add missing wrapLogMessage prop to test
* ContextMenuPlugin WIP
* Remove Add annotations menu item from graph context menu
* ts ifx
* WIP
* Tests updates
* ts check fix
* Fix rebase
* Use replace function in angular graph data links
* Refactor Context menu and add Menu component to grafana/ui
* ContextMenuPlugin WIP
* Fix docs issues
* Remove Add annotations menu item from graph context menu
* ts ifx
* Sliders: Update behavior and style tweak
* More style tweaks, and changed new graph opacity option from 0 - 1 to 1 to 100
* Updated point size max
* Fixed hooks useCallback dependency issue
* Update test
* create page and sidebar entry
* add components for query editor and definition
* split pane things
* add reducer and action
* implement split pane and update ui actions
* making things pretty
* Unify toolbar
* minor tweak to title prefix and some padding
* can create definitions
* fix default state
* add notificaion channel
* add wrappers to get correct spacing between panes
* include or exclude description
* implement query editor
* start on query result component
* update from master
* some cleanup and remove expressions touch ups
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
* Remove feature flag
* Add data source setting for Jaeger
* Refactor trace to logs settings
* Fix tests
* Get ds settings in two steps
* Add info to settings
* Update docs for trace to logs
* Update yarn.lock
* Apply suggestions from code review
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
* Update TraceToLogsSettings after merge with master
* Add config for tags
* Add tags to check for keys
* Apply suggestions from code review
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
* Update docs
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
* DataSourceSettings: Add servername field to DataSource TLS config
A DNS lookup URL can be provided in the DataSource URL field in order
to dynamically load balance between multiple instances of a DataSource.
When using mutual TLS, Golang's TLS config implementation checks that
the certificate's common name (< 1.15) or subject alternative name
(>= 1.15) has the same value as the domain being accessed. If the DNS
entry is dynamically generated for a specific environment, the
certificate cannot be generated with a name matching the dynamic
DNS URL. As such, Golang offers a servername field that can be set to
overwrite what value is used when checking against the certificate's
common name (or subject alternative name). Without this change, Skip
TLS Verify must be set to true in order for the DataSource to work,
removing some of the benefits gained by using mutual TLS.
This commit adds the ability to set Grafana's internal Golang TLS config
servername field from the UI or a provisioned DataSource.
The servername field is optional and the existing behavior is retained if
the field is not set.
Co-authored-by: Dana Pruitt <dpruitt@vmware.com>
Co-authored-by: Jeremy Alvis <jalvis@pivotal.io>
* Update docs with PR review changes
Co-authored-by: Jeremy Alvis <jalvis@pivotal.io>
Co-authored-by: Dana Pruitt <dpruitt@vmware.com>
* Update with additional PR requested changes
* Minor updates based on PR change requests
Co-authored-by: Dana Pruitt <dpruitt@vmware.com>
* Elasticsearch: View in context feature for logs
* Fixing unused type
* Limit show context to esVersion > 5
* Fixing scope for showContextToggle; removing console.log
* Fix typing; adding check for lineField
* Update test to reflect new sorting keys for logs
* Removing sort from metadata fields
* Adding comment for clarity
* Fixing scenerio where the data is missing
* remove export & use optional chaining
Co-authored-by: Elfo404 <gio.ricci@grafana.com>
* cater for empty labels and new DisplayNameFromDS field
* simplify
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* increase priority for ds display name
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* Expr: fix failure to execute due to OrgID
Get orgID from the plugin context, which makes more sense anyways.
makes expressions work again after https://github.com/grafana/grafana/pull/29449 changes.
* Do not save organisation on its alert query model
Co-authored-by: Sofia Papagiannaki <sofia@grafana.com>
* match time range
* less logging
* almost working
* more logging
* more logging
* fix snapshot
* Use layout effect for the time range ref update
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
* Starting moving more stuff into data source picker
* WIP progress
* Progress on datasource picker rethink
* Things are working now some details to figure out
* Removed commented part
* Complex work on getting data source lists
* Fixed variable support showing correct data sources
* Tried fixing dashboard import but failed
* Fixes
* Fixed import dashboard
* Fixed unit test
* Fixed explore test
* Fixed test
* Fix
* fixed more tests
* fixed more tests
* fixed showing which option is default in picker
* Changed query variable to use data source picker, updated tests and e2e
* Fixed more tests
* Updated snapshots, had wrong typescript version
* [#29569]: Added creation of missing directory
For image [ubuntu] : /etc/grafana/provisioning/plugins was missing in image creation.
* [#29569]: Added creation of missing directory
For image [alpine] : /etc/grafana/provisioning/plugins was missing in image creation.
* initial impl of Bars, Staircase, Smooth modes
* fix fillTo for staircase and smooth paths
* fix pointSize
* [bars] adjust gap factor & reduce bar width to include stroke width. remove rounding to favor gap & width uniformity over edge crispness.
* remove line path fallback for too-dense data
* "Auto" points mode implies "Never" for Bars
* slightly reduce x axis tick density
* fix bars height calc, make bars crisp again.
* [bars] don't use hard-coded 'x' scale key
* refactor catmullRomFitting() to accept x & y coord arrays. restrict to processing only visible data range.
* move path building functions to own file
* export typed functions
Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
* Rewrite auth proxy tests to use standard lib
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
* Auth proxy: Use standard error type
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
* feat: hide snapshots menu item from viewers
* feat(playlists): prevent viewers from creating/editing playlists
* feat: prevent viewers seeing playlist nav link if no playlists
* refactor(playlist): rename isViewer property to canEditPlaylists
* revert(playlists): put back note if viewer and no playlists
* refactor(snapshots): consider admin/editor permission in folders/dashboards for displaying menu item
* feat(snapshots): only show snapshot nav item if user is signed in
* fix(snapshots): revert snapshots to previous state if delete snapshot api error
* Removing PanelModel usage from query rows
* More work removing dependency on panel model
* Before big change to query options
* Query options now have no dependency on panel model
* Test page is working
* Shared query now works again
* Rename component
* fix after merge
* Fixed issue with old angular editors
* Add test coverage for uPlot initialization and data updates
* fix ts
* WIP
* I see some light in the tunel
* Tests update
* Fix rendering before hooks are evaluated
* Chore: Enable eslint react/no-render-return-value rule
Eanble the rule and remove the unused render return
part of: #29201
* Chore: Enable eslint react/no-children-prop rule
Not linting issues after turning on this. No other file changes requried
part of: #29201
* Chore: Enable eslint react/no-unknown-property rule
Correct enable-background to enableBackground
part of: #29201
* Chore: Enable eslint react/no-unescaped-entities rule
Replaced " with " replaced ' with '
part of: #29201
* WIP Add line limit and query type switch toLoki dashboard editor
* Refactor, reuse code for both - Explore and Dashboard
* Üpdate snapshot tests
* Refactor and unify
* Rename test file
* Update test
* DataLinks: Removes getDataSourceSettingsByUid from applyFieldOverrides and data linking code
* Fixed test
* Fixed a few tests
* Fixed unit tests
* Removed old getDataSourceSettingsByUid from interface, still there for runtime backward compatability
* Chore: Enable eslint react/display-name
Enable react/display-name and fixed the corresponding linting issue
part of: #29201
* Chore: Enable eslint react/no-deprecated
Enable react/no-deprecated and add the UNSAFE_ prefix for deprected methods
part of: #29201
* Chore: Enable eslint react/no-find-dom-node
Enable react/no-find-dom-node rule and use ref instead
part of: #29201
* Test: Update TeamGroupSync test snapshot
Since we added the displayName for ToolTip compontent and tag name is changed.
* Fix: Fixed ClickOutsideWrapper render
The props.children might contains numbers of nodes which make cloneElement failed. Change to simply use a div to wrapper
the children and assign the ref to div for this feature
* Style: Use shorthand method definition style for inline component
* Fix: Rebase master and fix linting
Rebase from master branch and fix new displayName linting warning
* Grunt: Removes grunt dependency and replaces some of it usage with alternatives
* Removed precommit toolkit task
* Fixed toolkit import
* Some cleanup of unused / not working stuff in build.go
* Removed sass errors
* Adding FilterByValue transformer skeleton
* Connecting options with Editor
* Improving UI and making deep copy of options on change.
* Improving Transformation Editor UI
* Implementing Regex filtering
* Adding valueFilters.ts and creating filter registry
* Connecting the test function
* Correcting TypeScript errors
* Using FilterInstance instead of simple Filter test function
* Adding field.type as filter options
* Improving UI. Adding custom placeholder depending on filter.
* Implementing a few more filter types
* Implementing more filters
* Return original data if no filter were processed
* Improving UI
* Correcting TS errors
* Making sure inequality transform are invalid until the filterExpression is not empty
* Cleanup in the UI file
* Improving UI (highlight invalid fields)
* Only show filterType that are supported for the selected field
* Adding tests + correction of a filter
* Adding transformer test
* Adding doc
* Cleanup
* Typing props for FilterSelectorRow component
Co-authored-by: Marcus Andersson <systemvetaren@gmail.com>
* Moving rendering in the JSX
Co-authored-by: Marcus Andersson <systemvetaren@gmail.com>
* Memoizing filterTypeOptions computation
Co-authored-by: Marcus Andersson <systemvetaren@gmail.com>
* Improve code compactness
Co-authored-by: Marcus Andersson <systemvetaren@gmail.com>
* Cleanup + solving TS errors
* Updating some labels
* Wrapping stuff around useMemo and useCallback
* Using cloneDeep from lodash
* Don't highlight field name input if null
* Removing time type fields in selectable options
* We want loose equality in this scenario.
* Adding `onChange` to useCallback dependencies
Co-authored-by: Marcus Andersson <systemvetaren@gmail.com>
* Include or exclude matching any or all conditions
* Correcting field name matching
* Cleanup
* Don't highlight the filterExpression input when its empty
* Adding Range filter
* Updating doc
* Correcting TS error
* Only showing the Match All/Match Any option if more than one condition
* Two inputs for the Range filter instead of one
* Improving invalid highlight for Range filter type
* Cleanup
* Improving labels in UI
* Using ButtonSelect to improve UI
* editor UI updates.
* Updating tests
* Adding component for Regex
* Improve TS typing
* Adding components for the other filter types.
* Cleanup
* Correct error
* Updating valueFilter.test.ts
* Updating filterByValue.test.ts
* Reverting and removing Range filter
* Update docs/sources/panels/transformations.md
* starting to implement poc.
* added a small poc.
* wip
* added tests.
* added structure for dynamic value matcher editors.
* added more support.
* added some more value matchers.
* removed unused value filters.
* added some more matchers.
* adding more matchers.
* added a range matcher.
* fixing some tests.
* fixing tests.
* remove unused dep.
* making the matching a bit more performant.
* UX improvements and alignment fixes
* fixed delete button.
* fixed some spacing in the UI.
* added docs for matchers.
* adding docs and exposing value matcher types.
* will store dateTime as string.
* updated docs according to feedback.
* moved filter by value in transformation list.
* Improved description.
* added regex value filter.
* added support for regex.
* fixing failing tests.
Co-authored-by: Marcus Andersson <systemvetaren@gmail.com>
Co-authored-by: Marcus Andersson <marcus.andersson@grafana.com>
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
* Add support for Sensu Go notification channel
Similar to current support for the older "Core" version of
Sensu, this commit add support for the newer version.
Closes#19908
Signed-off-by: Todd Campbell <todd@sensu.io>
* fix linter errors
Signed-off-by: Todd Campbell <todd@sensu.io>
* Apply suggestions from code review
PR review suggestions
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* Fix no new variables error
* Replace convey testing with testify
Signed-off-by: Todd Campbell <todd@sensu.io>
* Wording suggestions
Signed-off-by: Todd Campbell <todd@sensu.io>
* Add docker compose environment for testing/maintenance
Signed-off-by: Todd Campbell <todd@sensu.io>
* Renamed and fixed docker-compose.yaml to work in devenv
Signed-off-by: Todd Campbell <todd@sensu.io>
* Change sensugo web UI port to 3080 so as not to conflict with grafana
Signed-off-by: Todd Campbell <todd@sensu.io>
* Apply suggestions from code review
Set the API key as a secure value.
Co-authored-by: Sofia Papagiannaki <papagian@users.noreply.github.com>
* Add Sensu Go information to notifications doc
Signed-off-by: Todd Campbell <todd@sensu.io>
* Update pkg/services/alerting/notifiers/sensugo.go
Co-authored-by: Sofia Papagiannaki <papagian@users.noreply.github.com>
* change assert to require for Error/NoError tests
Signed-off-by: Todd Campbell <todd@sensu.io>
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
Co-authored-by: Sofia Papagiannaki <papagian@users.noreply.github.com>
* Moving query stuff out of dashboard folder
* Moved more stuff
* Moving more stuff
* Update
* WIP test page
* Minor change
* Before big changes
* Fixed test
* Refactoring some events to new events
* More refactoring
* Make panel editor subscribe to new event
* Minor change and comment added
* Updated snapshot
* move split pane logic to its own component
* fix update function typing
* destruct updateuistate
* updates after review
* reword the rightpane to work for text panel
Lead all top-level properties that we do not intend to export with an
underscore.
In 2.2.0, only definitions starting with a capital letter were exported.
As well, properties with a leading underscore were not visible to an
entire package - just within the same file. 3.0.0 still considers them
hidden, however, they are now visible to an entire package.
* Add an option to hide certain users in the UI
* revert changes for admin users routes
* fix sqlstore function name
* Improve slice management
Co-authored-by: Emil Tullstedt <emil.tullstedt@grafana.com>
* Hidden users: convert slice to map
* filter with user logins instead of IDs
* put HiddenUsers in Cfg struct
* hide hidden users from dashboards/folders permissions list
* Update conf/defaults.ini
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
* fix params order
* fix tests
* fix dashboard/folder update with hidden user
* add team tests
* add dashboard and folder permissions tests
* fixes after merge
* fix tests
* API: add test for org users endpoints
* update hidden users management for dashboard / folder permissions
* improve dashboard / folder permissions tests
* fixes after merge
* Guardian: add hidden acl tests
* API: add team members tests
* fix team sql syntax for postgres
* api tests update
* fix linter error
* fix tests errors after merge
Co-authored-by: Emil Tullstedt <emil.tullstedt@grafana.com>
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
Co-authored-by: Leonard Gram <leo@xlson.com>
* Wip
* feat: get storybook and app building locally
* docs: comment webpack react alias
* build(grafana-ui): put back ts-loader
* build: prefer storybook essentials over actions and docs. bump dark-mode
* chore(storybook): migrate to latest config
* build: prevent test env throwing Invalid hook call errors
* chore: lodash resolves to package dependency rather than project
* use decorators as variable instead of function
* perf(storybook): reduce bundling time by splitting type check and compilation
* refactor(storybook): use sortOrder.order param to sort intro story first
* build: use yarn workspace command
* refactor(storybook): use previous knobs addon registration
* migrate button story to controls
* build(storybook): silence warnings in console
* build: bump storybook related ts packages
* style: remove trailing whitespace
* refactor(graphng): export interface for storybook
* controls migration guide
* fix typo
* docs(storybook): default docs to use dark theme as per current implementation
* revert(grafana-ui): put back react-is namedExport
this was changed for react 17 bump but causes rollup to fail during bundling
* chore: bump storybook to 6.1, enable fastRefresh, silence eslint prop-types
* docs(grafana-ui): move knobs -> controls migration guide to storybook style-guide
* chore(storybook): silence terminal warning about order of docs addon
* Update contribute/style-guides/storybook.md
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
* Apply documentation suggestions
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
* chore(storybook): bump to 6.1.2
Co-authored-by: Peter Holmberg <peter.hlmbrg@gmail.com>
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
* Add loadtest which authenticates with API key
- Edit load tests to assign the orgId in the default function, as the setup function is only called once for all VUs and therefore the change is not persisted to each VU.
- Remove side effect from orgId setup function and explicitly set orgId in setup client
* sort semicolons, whitespace
* When comparing field config, shallowly compare custom config
* Refactoring plot init and data update (WIP)
* GraphNG: Fixed points mode
* Fixed min & max from frame config
* Fixed axis left / right auto logic
* Minor tweak to cursor color
* Fixed time axis now that uPlot deals in milliseconds as well
* fixed ts issue
* Updated test
* Fixed axis placement logic again
* Added new unit test for axis placement logic
* Removed unused props
* Fixed zoom issue due to uPlot time resolution change
* Add back millisecond time tick support
* Comment out GraphNG test
* Fixed being able to switch legend on/off
* Updated unit tests
* GraphNG: Fixed hiding axis
* Frame comparison: allow skipping properties
* Update y-axis ranges without reinitializing uPlot
* update snap
* GraphNG: Fixed axis label placement and spacing issues
* update snaps
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
* fixing so changes to annotations query links will update submenu.
* Refactored so we dont use the events to trigger a refresh but instead recreating the annotations list instead of mutating the existing list.
* updated snapshot.
* uppdates according to feedback.
* fixed so it also works to update a annotation.
* Refactor: Adds getNextAvailableId
* Refactor: Hides DependencyGraph button if there are no dependencies
* Refactor: Changes the new button
* Refactor: Removes usages of NEW_VARIABLE_ID
* Refactor: Reverts the new button
* Updated index topic, removed "what-is-grafana", and adjusted weight of few other topics. Also, updated the left menu.
* Updated title to "Getting started".
* Added alias /docs/grafana/latest/guides/what-is-grafana to _index.md file
* comes from grafana/gel-app
* remove transform plugin code
* move __expr__ and -100 constants to expr pkg
* set OrgID on request plugin context
* use gtime for resample duration
* in resample, rename "rule" to "window", use gtime for duration, parse duration before exec
* remove gel entry from plugins-bundled/external.json
which creates an empty array for plugins
* Tests: Adds expects for observables
* Refactor: renames matcher
* Chore: changed jest version and removed as dev dependency
* Refactor: Changes after PR review
* wip
* Chore: revert
* Chore: Adds jest-matcher-utils
* Chore: fixed merge error
* Tests: Removed inline snapshots as they are env dependent
* Tests: missed a snapshot
* Refactor: Removed type file after PR comments
* fixing so we dont run multiple dashboard links searches when changing variables.
* changed so we fetch the list when open the dashboard links dropdown.
* removed verification of unneccesary requests.
The annotation_tag and alert_rule_tag tables did not have
PRIMARY KEY defined what cause problems with migration to
MariaDB with Galera setup with
innodb_force_primary_key=1
Or MySQL > 8.0.13 with
sql_require_primary_key=ON
Which can manifest as follows:
MariaDB
Error 1173: This table type requires a primary key
MySQL
ERROR 3750 (HY000): Unable to create or change a table
without a primary key, when the system variable 'sql_require_primary_key' is set.
Extra reading for curious:
https://jfg-mysql.blogspot.com/2017/08/danger-no-pk-with-RBR-and-mariadb-protection.htmlFixes#12971
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
* Docs: Fixes what'new menu and creates index page, adds first draft of release notes to docs
* Minor tweaks
* Fixed missing letter
* Updates
* Updated
Co-authored-by: Drone <drone@grafana.com>
* remove unused function to interpolate URLs
* share function to add headers between ds/plugin proxies
* stop performing unnecessary plugin setting lookup
* fix bug causing runtime errors when using complex templated URLs
* lower case util functions not used outside of pluginproxy package
* change test URL to a (valid) dummy URL to make intent clearer
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* Alerting NG: prototype v2 (WIP)
* Separate eval package
* Modify eval alert definition endpoint
* Disable migration if ngalert is not enabled
* Remove premature test
* Fix lint issues
* Delete obsolete struct
* Apply suggestions from code review
* Update pkg/services/ngalert/ngalert.go
Co-authored-by: Kyle Brandt <kyle@grafana.com>
* Add API endpoint for listing alert definitions
* Introduce index for alert_definition table
* make ds object for expression to avoid panic
* wrap error
* Update pkg/services/ngalert/eval/eval.go
* Swith to backend.DataQuery
* Export TransformWrapper callback
* Fix lint issues
* Update pkg/services/ngalert/ngalert.go
Co-authored-by: Kyle Brandt <kyle@grafana.com>
* Validate alert definitions before storing them
* Introduce AlertQuery
* Add test
* Add QueryType in AlertQuery
* Accept only float64 (seconds) durations
* Apply suggestions from code review
* Get rid of bus
* Do not export symbols
* Fix failing test
* Fix failure due to service initialization order
Introduce MediumHigh service priority and assign it to backendplugin
service
* Fix test
* Apply suggestions from code review
* Fix renamed reference
Co-authored-by: Kyle Brandt <kyle@grafana.com>
* Elasticsearch: Add Moving Function Pipeline Aggregation
* Removing support for moving average in 7.x
* Fixing getMetricAggTypes to handle undefined esVersion
* Adding moving_fn to go code
* Update public/app/plugins/datasource/elasticsearch/metric_agg.ts
Co-authored-by: Giordano Ricci <grdnricci@gmail.com>
* Adding test for esversion 70
* Removing default value for script, adding placeholder instead
* Fixing formatting
* Adding code for handling missing or obsolete aggregations
Co-authored-by: Giordano Ricci <grdnricci@gmail.com>
* refactor(dashboard): remove usage of legacyform components in sharemodal
* refactor(dashboard): replace legacyform components
* refactor(dashboard): remove ng-if and correct typo in content of sharesnapshot
* feat(grafana-ui): set displayName prop for Switch component
* refactor(dashboard): migrate TimePickerSettings legacyform components
* refactor(queryoptions): migrate switch and input to nextgen components
* refactor(sharesnapshot): prefer InlineFieldRow over gf-form-group
* refactor(shareembed): styling fixes
* refactor(timepickersettings): prefer double bang over nullish coalescing operator
* fix(grafana-ui): switch uses id prop if passed in
* feat: connect labels and switches with ids
* docs(devenv): introduce troubleshooting section about mac osx and logs
* docs(devenv): tidy troubleshooting
* docs(devenv): move troubleshooting headers up a level and expand on error messge
* TraceViewer: Make sure it does not break when no trace is passed
- exit trace conversion early when there is no trace data
- added test to cover missing trace for trace viewer
* Review feedback
* Use RTL for new test
* Exit early if trace or traceID is not there
* Backend: Adds route for well-known change password URL
* Include 'dashboard/new' in backend routes
* Move index route handler registration out of "not logged in views" section
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* Graph refactorings
* Move legend to GraphNG and use new VizLayout
* Things are working
* remove unused things
* Update
* Fixed ng test dashboard
* Update
* More refactoring
* Removed plugin
* Upgrade uplot
* Auto size axis
* Axis scaling
* Fixed tests
* updated
* minor simplification
* Fixed selection color
* Fixed story
* Minor story fix
* Improve x-axis formatting
* Tweaks
* Update
* Updated
* Updates to handle timezone
* Updated
* Fixing types
* Update
* Fixed type
* Updated
* Chore: use jest without grunt
* Run no-focus-convey-tests and no-only-tests as well
* Update lib.star test-backend script with no-focus test to run first
* Lets see a failing test
* Revert "Lets see a failing test"
This reverts commit cb6c6ed67d.
* Update no-focus-convey test to a script
* Update scripts/lib.star
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* Update drone.yml
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* Split main reducer from item reducer
* Move query related redux to separate file
* Split more parts and tests
* Fix import
* Remove unused code
* Update public/app/features/explore/state/datasource.ts
Co-authored-by: Zoltán Bedi <zoltan.bedi@gmail.com>
* Add section comments
* Rename ExploreItem to ExplorePane
* Fix imports
Co-authored-by: Zoltán Bedi <zoltan.bedi@gmail.com>
* FieldColor: Per panel settings to filter out supported modes
* Updates
* Updated solution
* Update panel plugin API for standard options support
* Update FieldColorConfigSettings interface
* Change color mode correctly when changing plugin type
* Render only applicable color modes in field color config editor
* Apply field config API changes
* TS fixes
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
* Add Datetime local (No date if today) option
* Add more tests
* Revert to using function for local dateTime format
This is required as Intl api used to convert date to local format is not present in
node environments
* Dashboard: Add named capture groups to variable query regex
Variable query regex are able to use 'text' and 'value' named capture
groups to allow for separate display text to be extracted from the
query result. e.g.
Using a regex of /foo="(?<text>[^"]+)|bar="(?<value>[^"]+)/g on a query
result of metric{foo="FOO", bar="BAR"} would result in the variable
value being set to 'BAR' but display text being set to 'FOO'
Resolves#21076
* Improve regex capture group documentation
* Update docs/sources/variables/filter-variables-with-regex.md
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
* Apply suggestions from code review
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
* Apply suggestions from code review
Co-authored-by: Hugo Häggmark <hugo.haggmark@gmail.com>
* Use text capture if value capture does not match
This is to keep the behaviour consistent with the current behavior. See
discussion https://github.com/grafana/grafana/pull/28625/files#r516490942
* Improve regex field placeholder and tooltip message
To make the feature more discoverable to users the place holder example
now includes the named capture groups. The tool tip message also
includes a reference and link to the documentation.
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
Co-authored-by: Hugo Häggmark <hugo.haggmark@gmail.com>
* feat: added NGINX example for using websockets to Loki
* chore: corrections after review
* chore: more correrctions from review
* chore: creview corrections
* chore: addressed review comment by @achatterjee-grafana
* Cloudwatch: Fix issue with reducer transform not working properly with Cloudwatch data
* Updated go sdk and updated code
* CloudWatch: Improve test
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* Provisioning: Fixed problem with getting started panel being added to custom home dashboard
* Fixed comment
* Update pkg/api/dashboard.go
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* Removed auto-capitalization from the login form
On mobile browsers, by default most keyboards will auto capitalize the first letter of the email/username, which is case sensitive.
This PR fixes that.
* Fixed autoCapitalize react keyword
* Build: changing docs dev-environment
I have added a new image that will include the auto-generated frontend docs so you don't have to generate those locally prior to running the doc container. This has a dependency on this PR: https://github.com/grafana/website/pull/2744 and that we publish a version of the `grafana/docs-devenv` image.
* will ignore everything (even symbolic links)
* fixed spelling.
* added newline.
* updated image name.
* Fix logSeriesToLogsModel when some data frames have empty fields
* Update test
* Update public/app/core/logs_model.ts
Co-authored-by: Zoltán Bedi <zoltan.bedi@gmail.com>
Co-authored-by: Zoltán Bedi <zoltan.bedi@gmail.com>
* Add info about CSV download for Excel in What's new article
* Update docs/sources/whatsnew/whats-new-in-v7-3.md
* Update docs/sources/whatsnew/whats-new-in-v7-3.md
* Add test for SoloPanelPage.tsx
* Fix navigation from one SoloPanelPage to another one
The panel did not update because it assumed that the dashboard was already
fully loaded.
Adds a couple upgrade notes for v7.3 regarding database migrations for
user invites and snapshots.
Co-authored-by: Will Browne <wbrowne@users.noreply.github.com>
* use percentage on topPanel, limit resize
* add relative size to rightPanel, resize split panes on resize
* lock min size of options pane to min 300px, adding debounce
* sorting imports
* assigning the ref, remove debounce
* set default uistate to number instead of string
* revert go.sum and go.mod
* fix go.mod
* feat(grafana-ui): autofocus threshold editor input
* refactor(grafana-ui): remove commented out css
* feat(grafana-ui): use ref for autofocus new thresholds editor input
* refactor(grafana-ui): conditionally set input ref for latest threshold
* refactor(grafana-ui): put back createRef for input ref
Adds support for the Forward OAuth Identity feature in backend data source plugins.
Earlier this feature has only been supported for non-backend data source plugins.
Fixes#26023
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
* Docs: what's new in enterprise 7.3
* feedback
* feedback
* Update docs/sources/whatsnew/whats-new-in-v7-3.md
Co-authored-by: Emil Tullstedt <emil.tullstedt@grafana.com>
* link to auditing
Co-authored-by: Emil Tullstedt <emil.tullstedt@grafana.com>
#24999 changed the error response payload, but the test data source
was not adapted to this change and broke the feature of displaying
any errors to the user in the UI. This change should resolve this
problem.
Ref #24999
Ref #28481
If anonymous access is enabled for an org and there are multiple
orgs. When requesting a page that requires user to be logged in
and orgId query string is set in the request url to an org not
equal the anonymous org, if the user is not logged in should
be redirected to the login page.
Fixes#26120
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
Co-authored-by: Sofia Papagiannaki <papagian@users.noreply.github.com>
* Updated Getting Started topic, based on feedback from Diana and Daniel. Added 2 entries to Glassry.
* Added new topic Getting Started with Grafana and Prometheus
* Corrected image path. A couple of other minor changes.
* Updated image link based on Marcus's suggestion.
* Updated topics based on feedback.
* Update docs/sources/getting-started/getting-started.md
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
* Update docs/sources/getting-started/getting-started.md
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
* Added Diana's latest changes.
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
* Explore: parse time range fix
* Remove commented out code
* Fix cases for string epoch and ISO strings
Co-authored-by: Andrej Ocenas <mr.ocenas@gmail.com>
* improve reduce transformer
* add measurment classes
* sync with new grafana measure format
* use address for live
* use plural in URL
* set the field name
* fix build
* find changes
* POST http to channel
* Yarn: Update lock file (#28014)
* Loki: Run instant query only in Explore (#27974)
* Run instant query only in Explore
* Replace forEach with for loop
* don't cast
* Docs: Fixed row display in table (#28031)
* Plugins: Let descendant plugins inherit their root's signature (#27970)
* plugins: Let descendant plugins inherit their root's signature
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
* Registry: Fix service shutdown mode trigger location (#28025)
* Add Alex Khomenko as member (#28032)
* show history
* fix confirm
* fix confirm
* add tests
* fix lint
* add more errors
* set values
* remove unrelated changes
* unrelated changes
* Update pkg/models/live.go
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* Update pkg/models/live.go
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* Update pkg/services/live/live.go
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* Update pkg/services/live/pluginHandler.go
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* Update pkg/services/live/pluginHandler.go
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* Update pkg/services/live/pluginHandler.go
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* use measurments for testdata endpoints
* add live to testdata
* add live to testdata
* Update pkg/services/live/channel.go
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* Apply suggestions from code review
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* update comment formats
* uprevert testdata
* Apply suggestions from code review
Co-authored-by: Will Browne <wbrowne@users.noreply.github.com>
Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>
* Apply suggestions from code review
* CloudWatch: Add EC2CapacityReservations Namespace (#28309)
* API: Fix short URLs (#28300)
* API: Fix short URLs
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
* Chore: Add cloud-middleware as code owners (#28310)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
* SQLStore: Run tests as integration tests (#28265)
* sqlstore: Run tests as integration tests
* Truncate database instead of re-creating it on each test
* Fix test description
See https://github.com/grafana/grafana/pull/12129
* Fix lint issues
* Fix postgres dialect after review suggestion
* Rename and document functions after review suggestion
* Add periods
* Fix auto-increment value for mysql dialect
Co-authored-by: Emil Tullstedt <emil.tullstedt@grafana.com>
* Drone: Fix grafana-mixin linting (#28308)
* Drone: Fix Starlark script
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
* grafana-mixin: Move build logic to scripts
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
* Drone: Use mixin scripts
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
* CI build image: Install jsonnetfmt and mixtool
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
* Makefile: Print commands
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
* should only ignore the file in the grafana mixin root folder (#28306)
Signed-off-by: bergquist <carl.bergquist@gmail.com>
* fix: for graph size not taking up full height or width
* Graph NG: fix toggling queries and extract Graph component from graph3 panel (#28290)
* Fix issue when data and config is not in sync
* Extract GraphNG component from graph panel and add some tests coverage
* Update packages/grafana-ui/src/components/uPlot/hooks.test.ts
* Update packages/grafana-ui/src/components/uPlot/hooks.test.ts
* Update packages/grafana-ui/src/components/uPlot/hooks.test.ts
* Fix grid color and annotations refresh
* Drone: Use ${DRONE_TAG} in release pipelines, since it should work (#28299)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
* Explore: respect min_refresh_interval (#27988)
* Explore: respect min_refresh_interval
Fixes#27494
* fixup! Explore: respect min_refresh_interval
* fixup! Explore: respect min_refresh_interval
* UI: export defaultIntervals from refresh picker
* fixup! Explore: respect min_refresh_interval
Co-authored-by: Zoltán Bedi <zoltan.bedi@gmail.com>
* Loki: Base maxDataPoints limits on query type (#28298)
* Base maxLines and maxDataPoints based on query type
* Allow overriding the limit to higher value
* Bump tree-kill from 1.2.1 to 1.2.2 (#27405)
Bumps [tree-kill](https://github.com/pkrumins/node-tree-kill) from 1.2.1 to 1.2.2.
- [Release notes](https://github.com/pkrumins/node-tree-kill/releases)
- [Commits](https://github.com/pkrumins/node-tree-kill/compare/v1.2.1...v1.2.2)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Bump handlebars from 4.4.3 to 4.7.6 (#27416)
Bumps [handlebars](https://github.com/wycats/handlebars.js) from 4.4.3 to 4.7.6.
- [Release notes](https://github.com/wycats/handlebars.js/releases)
- [Changelog](https://github.com/handlebars-lang/handlebars.js/blob/master/release-notes.md)
- [Commits](https://github.com/wycats/handlebars.js/compare/v4.4.3...v4.7.6)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Build(deps): Bump http-proxy from 1.18.0 to 1.18.1 (#27507)
Bumps [http-proxy](https://github.com/http-party/node-http-proxy) from 1.18.0 to 1.18.1.
- [Release notes](https://github.com/http-party/node-http-proxy/releases)
- [Changelog](https://github.com/http-party/node-http-proxy/blob/master/CHANGELOG.md)
- [Commits](https://github.com/http-party/node-http-proxy/compare/1.18.0...1.18.1)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Automation: Add backport github action (#28318)
* BackendSrv: Fixes queue countdown when unsubscribe is before response (#28323)
* GraphNG: Use AxisSide enum (#28320)
* IssueTriage: Needs more info automation and messages (#28137)
* IssueTriage: Needs more info automation and messages
* Updated
* Updated
* Updated wording
* SAML: IdP-initiated SSO docs (#28280)
* SAML: IdP-initiated SSO docs
* Update docs/sources/enterprise/saml.md
Co-authored-by: Emil Tullstedt <emil.tullstedt@grafana.com>
* Apply suggestions from code review
Co-authored-by: Emil Tullstedt <emil.tullstedt@grafana.com>
Co-authored-by: Emil Tullstedt <emil.tullstedt@grafana.com>
* Loki: Run instant query only when doing metric query (#28325)
* Run instant query only when doing metric query
* Update public/app/plugins/datasource/loki/datasource.ts
Co-authored-by: Ivana Huckova <30407135+ivanahuckova@users.noreply.github.com>
Co-authored-by: Ivana Huckova <30407135+ivanahuckova@users.noreply.github.com>
* Automation: Tweaks to more info message (#28332)
* AlertingNG: remove warn/crit from eval prototype (#28334)
and misc cleanup
* area/grafana/toolkit: update e2e docker image (#28335)
* add xvfb to image
* comment out toolkit inclusion
* add latest tag
* update packages for cypress
* cleanup script
* Update auth-proxy.md (#28339)
Fix a minor grammar mistake: 'handling' to 'handle'.
* Git: Create .gitattributes for windows line endings (#28340)
With this set, Windows users will have text files converted from Windows style line endings (\r\n) to Unix style line endings (\n) when they’re added to the repository.
https://www.edwardthomson.com/blog/git_for_windows_line_endings.html
* Docs: Add docs for valuepicker (#28327)
* Templating: Replace all '$tag' in tag values query (#28343)
* Docs: Add missing records from grafana-ui 7.2.1 CHANGELOG (#28302)
* Dashboard links: Places drop down list so it's always visible (#28330)
* calculating whether to place the list on the right or left edge of the parent
* change naming and add import of createRef
* Automation: Update backport github action trigger (#28352)
It seems like GitHub has solved the problem of running github actions on PRs from forks with access to secrets.
https://github.blog/2020-08-03-github-actions-improvements-for-fork-and-pull-request-workflows/#improvements-for-public-repository-forks
If I change the event that triggers it to pull_request_target the action is run in the context of the base instead of the merged PR branch
* ColorSchemes: Adds more color schemes and text colors that depend on the background (#28305)
* Adding more color modes and text colors that depend on the background color
* Updates
* Updated
* Another big value fix
* Fixing unit tests
* Updated
* Updated test
* Update
* Updated
* Updated
* Updated
* Updated
* Added new demo dashboard
* Updated
* updated
* Updated
* Updateed
* added beta notice
* Fixed e2e test
* Fix typos
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
* revert pseduo code
* apply feedback
* remove HTTP for now
* fix backend test
* change to datasource
* clear input for streams
* fix docs?
* consistent measure vs measurements
* better jsdocs
* fix a few jsdoc errors
* fix comment style
* Remove commented out code
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
* Clean up code
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
* Clean up code
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
* Clean up code
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
* Clean up code
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
* Clean up code
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
* Clean up code
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
* Clean up code
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
* Update pkg/models/live.go
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* Fix build
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
* set the stringField
Co-authored-by: Torkel Ödegaard <torkel@grafana.org>
Co-authored-by: Ivana Huckova <30407135+ivanahuckova@users.noreply.github.com>
Co-authored-by: ozhuang <ozhuang.95@gmail.com>
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
Co-authored-by: Amos Law <ahlaw.dev@gmail.com>
Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
Co-authored-by: Will Browne <wbrowne@users.noreply.github.com>
Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>
Co-authored-by: The Rock Guy <fabian.bracco@gvcgroup.com.au>
Co-authored-by: Sofia Papagiannaki <papagian@users.noreply.github.com>
Co-authored-by: Emil Tullstedt <emil.tullstedt@grafana.com>
Co-authored-by: Carl Bergquist <carl@grafana.com>
Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
Co-authored-by: Elliot Pryde <elliot.pryde@elliotpryde.com>
Co-authored-by: Zoltán Bedi <zoltan.bedi@gmail.com>
Co-authored-by: Andrej Ocenas <mr.ocenas@gmail.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Alexander Zobnin <alexanderzobnin@gmail.com>
Co-authored-by: Kyle Brandt <kyle@grafana.com>
Co-authored-by: Brian Gann <briangann@users.noreply.github.com>
Co-authored-by: J-F-Far <joel.f.farthing@gmail.com>
Co-authored-by: acoder77 <73009264+acoder77@users.noreply.github.com>
Co-authored-by: Peter Holmberg <peterholmberg@users.noreply.github.com>
Co-authored-by: Krzysztof Dąbrowski <krzysdabro@live.com>
Co-authored-by: maknik <mooniczkam@gmail.com>
* adding cache and making sure we don't fail build if no changes have been made.
* fixed indentation.
* changed so we use the shared repo for the sync action.
* Alerting: Return proper status code when trying to create an Alert Notification where the name or UID already exists.
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
* Adding more color modes and text colors that depend on the background color
* Updates
* Updated
* Another big value fix
* Fixing unit tests
* Updated
* Updated test
* Update
* Updated
* Updated
* Updated
* Updated
* Added new demo dashboard
* Updated
* updated
* Updated
* Updateed
* added beta notice
* Fixed e2e test
* Fix issue when data and config is not in sync
* Extract GraphNG component from graph panel and add some tests coverage
* Update packages/grafana-ui/src/components/uPlot/hooks.test.ts
* Update packages/grafana-ui/src/components/uPlot/hooks.test.ts
* Update packages/grafana-ui/src/components/uPlot/hooks.test.ts
* Fix grid color and annotations refresh
* sqlstore: Run tests as integration tests
* Truncate database instead of re-creating it on each test
* Fix test description
See https://github.com/grafana/grafana/pull/12129
* Fix lint issues
* Fix postgres dialect after review suggestion
* Rename and document functions after review suggestion
* Add periods
* Fix auto-increment value for mysql dialect
Co-authored-by: Emil Tullstedt <emil.tullstedt@grafana.com>
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/main/.github/commands.json) and some other GitHub workflows [workflows](https://github.com/grafana/grafana/tree/main/.github/workflows).
Comment commands:
* Write the word `/duplicate #<number>` anywhere in a comment and the bot will add the correct label and standard message.
* Write the word `/needsMoreInfo` anywhere in a comment and the bot will add the correct label and standard message.
Label commands:
* Add label `bot/question` the the bot will close with standard question message and add label `type/question`
* Add label `bot/duplicate` the the bot will close with standard duplicate message and add label `type/duplicate`
* Add label `bot/needs more info` for bot to request more info (or use comment command mentioned above)
* Add label `bot/close feature request` for bot to close a feature request with standard message and adds label `not implemented`
* Add label `bot/no new info` for bot to close an issue where we asked for more info but has not received any updates in at least 14 days.
## Metrics
Metrics are configured in [metrics-collector.json](https://github.com/grafana/grafana/blob/main/.github/metrics-collector.json) and are also defined in the
To automatically backport a PR to a release branch like v7.3.x add a label named `backport v7.3.x`. The label name should follow the pattern `backport <branch-name>`. Once merged grafanabot will automatically
try to cherry-pick the PR merge commit into that branch and open a PR. It will sync the milestone with the source PR so make sure the source PR also is assigned the milestone for the patch release. If the PR is already merged you can still add this label and trigger the backport automation.
If there are merge conflicts the bot will write a comment on the source PR saying the cherry-pick failed. In this case you have to do the cherry pick and backport PR manually.
The backport logic is written [here](https://github.com/grafana/grafana-github-actions/blob/main/backport/backport.ts)
"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",
@@ -14,14 +16,38 @@
},
{
"type":"label",
"name":"type/duplicate",
"name":"bot/duplicate",
"addLabel":"type/duplicate",
"removeLabel":"bot/duplicate",
"action":"close",
"comment":"Thanks for creating this issue! It looks like this has already been reported by another user. We’ve closed this in favor of the existing one. Please consider adding any details you think is missing to that issue.\n\nTo avoid having your issue closed in the future, please read our [CONTRIBUTING](https://github.com/grafana/grafana/blob/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",
"name":"needsMoreInfo",
"allowUsers":[],
"action":"updateLabels",
"addLabel":"bot/needs more info"
},
{
"type":"label",
"name":"no new info",
"name":"bot/needs more info",
"action":"updateLabels",
"addLabel":"needs more info",
"removeLabel":"bot/needs more info",
"comment":"Thanks for creating this issue! We think it's missing some basic information. \r\n\r\nFollow the issue template and add additional information that will help us replicate the problem. \r\nFor data visualization issues: \r\n- Query results from the inspect drawer (data tab & query inspector)\r\n- Panel settings can be extracted in the panel inspect drawer JSON tab\r\n\r\nFor dashboard related issues: \r\n- Dashboard JSON can be found in the dashboard settings JSON model view\r\n\r\nFor authentication, provisioning and alerting issues, Grafana server logs are useful. \r\n\r\nHappy graphing!"
},
{
"type":"label",
"name":"bot/no new info",
"action":"close",
"comment":"We've closed this issue since it needs more information and hasn't had any activity recently. We can re-open it after you you add more information. To avoid having your issue closed in the future, please read our [CONTRIBUTING](https://github.com/grafana/grafana/blob/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!"
},
{
"type":"label",
"name":"bot/close feature request",
"action":"close",
"addLabel":"not implemented",
"comment":"This feature request has been open for a long time with few received upvotes or comments, so we are closing it. We're trying to limit open GitHub issues in order to better track planned work and features. \r\n\r\nThis doesn't mean that we'll never ever implement it or that we will never accept a PR for it. A closed issue can still attract upvotes and act as a ticket to track feature demand\/interest. \r\n\r\nThank You to you for taking the time to create this issue!"
@@ -19,9 +19,20 @@ For more ways to contribute, check out the [Open Source Guides](https://opensour
### Report bugs
Before submitting a new issue, try to make sure someone hasn't already reported the problem. Look through the [existing issues](https://github.com/grafana/grafana/issues) for similar issues.
Report a bug by submitting a [bug report](https://github.com/grafana/grafana/issues/new?labels=type%3A+bug&template=1-bug_report.md). Make sure that you provide as much information as possible on how to reproduce the bug.
Before submitting a new issue, try to make sure someone hasn't already reported the problem. Look through the [existing issues](https://github.com/grafana/grafana/issues) for similar issues.
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.
#### Security issues
@@ -65,4 +76,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,10 +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 `type/question` and the bot will close it with an appropriate message.
* Add `bot/question` and the bot will close it with an appropriate message.
[Read more on bot actions](https://github.com/grafana/grafana/blob/main/.github/bot.md)
@@ -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:
- **Visualize:** Fast and flexible client side graphs with a multitude of options. Panel plugins for many different way to visualize metrics and logs.
- **Visualize:** Fast and flexible client side graphs with a multitude of options. Panel plugins offer many different ways to visualize metrics and logs.
- **Dynamic Dashboards:** Create dynamic & reusable dashboards with template variables that appear as dropdowns at the top of the dashboard.
- **Explore Metrics:** Explore your data through ad-hoc queries and dynamic drilldown. Split view and compare different time ranges, queries and data sources side by side.
- **Explore Logs:** Experience the magic of switching from metrics to logs with preserved label filters. Quickly search through all your logs or streaming them live.
@@ -33,14 +33,15 @@ 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
@@ -38,6 +38,12 @@ PRs MUST be [reviewed](https://help.github.com/en/github/collaborating-with-issu
Once a PR is approved as per above, any team member MAY merge the PR.
## Backporting a PR
PRs intended for inclusion in the next PATCH release they must be backported to the release branch. The bot can do this automatically. [Read more on backport PRs](https://github.com/grafana/grafana/blob/main/.github/bot.md). Both the source PR and the backport PR should be assigned to the patch release milestone, unless you are backporting to many releases then it can differ.
Backport PRs are also needed during the beta period to get fixes into the stable release.
# Release workflow
## Branch structure
@@ -45,7 +51,7 @@ Once a PR is approved as per above, any team member MAY merge the PR.
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.
@@ -55,14 +61,12 @@ 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.
PRs intended for inclusion in the next PATCH release MUST be labeled with `cherry-pick-needed` so they can be picked up by automated release tooling.
# Path to the default home dashboard. If this value is empty, then Grafana uses StaticRootPath + "dashboards/home.json"
default_home_dashboard_path=
################################### Data sources #########################
[datasources]
# Upper limit of data sources that Grafana will return. This limit is a temporary configuration and it will be deprecated when pagination will be introduced on the list data sources API.
# Path to a custom home page. Users are only redirected to this if the default home dashboard is used. It should match a frontend route and contain a leading slash.
home_page=
# External user management
external_manage_link_url=
external_manage_link_name=
@@ -296,6 +342,9 @@ editors_can_admin = false
# The duration in time a user invitation remains valid before expiring. This setting should be expressed as a duration. Examples: 6h (hours), 2d (days), 1w (week). Default is 24h (24 hours). The minimum supported duration is 15m (15 minutes).
user_invite_max_lifetime_duration=24h
# Enter a comma-separated list of usernames to hide them in the Grafana UI. These users are shown to Grafana admins and to themselves.
# 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.
allow_loading_unsigned_plugins=
# Enable or disable installing plugins directly from within Grafana.
# Default timezone for user preferences. Options are 'browser' for the browser local timezone or a timezone name from IANA Time Zone database, e.g. 'UTC' or 'Europe/Amsterdam' etc.
default_timezone=browser
[expressions]
# Enable or disable the expressions functionality.
enabled=true
[geomap]
# Set the JSON configuration for the default basemap
# You can configure the database connection by specifying type, host, name, user and password
@@ -87,6 +94,12 @@
# For "postgres" only, either "disable", "require" or "verify-full"
;ssl_mode = disable
# Database drivers may support different transaction isolation levels.
# Currently, only "mysql" driver supports isolation levels.
# If the value is empty - driver's default isolation level is applied.
# For "mysql" use "READ-UNCOMMITTED", "READ-COMMITTED", "REPEATABLE-READ" or "SERIALIZABLE".
;isolation_level =
;ca_cert_path =
;client_key_path =
;client_cert_path =
@@ -110,6 +123,11 @@
# For "sqlite3" only. cache mode setting used for connecting to the database. (private, shared)
;cache_mode = private
################################### Data sources #########################
[datasources]
# Upper limit of data sources that Grafana will return. This limit is a temporary configuration and it will be deprecated when pagination will be introduced on the list data sources API.
;datasource_limit = 5000
#################################### Cache server #############################
[remote_cache]
# Either "redis", "memcached" or "database" default is "database"
@@ -127,10 +145,13 @@
# This enables data proxy logging, default is false
;logging = false
# How long the data proxy waits before timing out, default is 30 seconds.
# How long the data proxy waits to read the headers of the response before timing out, default is 30 seconds.
# This setting also applies to core backend HTTP data sources where query requests use an HTTP client with timeout set.
;timeout = 30
# How long the data proxy waits to establish a TCP connection before timing out, default is 10 seconds.
;dialTimeout = 10
# How many seconds the data proxy waits before sending a keepalive probe request.
;keep_alive_seconds = 30
@@ -143,6 +164,11 @@
# waiting for the server to approve.
;expect_continue_timeout_seconds = 1
# Optionally limits the total number of connections per host, including connections in the dialing,
# active, and idle states. On limit violation, dials will block.
# A value of zero (0) means no limit.
;max_conns_per_host = 0
# The maximum number of idle connections that Grafana will keep alive.
;max_idle_connections = 100
@@ -160,6 +186,9 @@
# Change this option to false to disable reporting.
;reporting_enabled = true
# The name of the distributor of the Grafana instance. Ex hosted-grafana, grafana-labs
;reporting_distributor = grafana-labs
# Set to false to disable all checks to https://grafana.net
# for new versions (grafana itself and plugins), check is used
# in some UI views to notify that grafana or plugin update exists
@@ -228,6 +257,15 @@
# when they detect reflected cross-site scripting (XSS) attacks.
;x_xss_protection = true
# Enable adding the Content-Security-Policy header to your requests.
# CSP allows to control resources the user agent is allowed to load and helps prevent XSS attacks.
;content_security_policy = false
# Set Content Security Policy template used when adding the Content-Security-Policy header to your requests.
# $NONCE in the template includes a random nonce.
# $ROOT_PATH is server.root_url without the protocol.
# Path to a custom home page. Users are only redirected to this if the default home dashboard is used. It should match a frontend route and contain a leading slash.
; home_page =
# External user management, these options affect the organization users view
;external_manage_link_url =
;external_manage_link_name =
@@ -295,6 +336,9 @@
# The duration in time a user invitation remains valid before expiring. This setting should be expressed as a duration. Examples: 6h (hours), 2d (days), 1w (week). Default is 24h (24 hours). The minimum supported duration is 15m (15 minutes).
;user_invite_max_lifetime_duration = 24h
# Enter a comma-separated list of users login to hide them in the Grafana UI. These users are shown to Grafana admins and themselves.
; hidden_users =
[auth]
# Login cookie name
;login_cookie_name = grafana_session
@@ -311,7 +355,7 @@
# Set to true to disable (hide) the login form, useful if you use OAuth, defaults to false
;disable_login_form = false
# Set to true to disable the signout link in the side menu. useful if you use auth.proxy, defaults to false
# Set to true to disable the signout link in the side menu. Useful if you use auth.proxy or auth.jwt, defaults to false
# Configures the batch size for the annotation clean-up job. This setting is used for dashboard, API, and alert annotations.
;cleanupjob_batchsize = 100
[annotations.dashboard]
# Dashboard annotations means that annotations are associated with the dashboard they are created on.
@@ -664,6 +780,12 @@
; basic_auth_username =
; basic_auth_password =
# Metrics environment info adds dimensions to the `grafana_environment_info` metric, which
# can expose more information about the Grafana instance.
[metrics.environment_info]
#exampleLabel1 = exampleValue1
#exampleLabel2 = exampleValue2
# Send internal metrics to Graphite
[metrics.graphite]
# Enable by setting the address setting (ex localhost:2003)
@@ -691,6 +813,8 @@
# and indicates the initial sampling rate before the actual one
# is received from the mothership
;sampler_param = 1
# sampling_server_url is the URL of a sampling manager providing a sampling strategy.
;sampling_server_url =
# Whether or not to use Zipkin propagation (x-b3- HTTP headers).
;zipkin_propagation = false
# Setting this to true disables shared RPC spans.
@@ -748,8 +872,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.
;allow_loading_unsigned_plugins =
# Enable or disable installing plugins directly from within Grafana.
# Default timezone for user preferences. Options are 'browser' for the browser local timezone or a timezone name from IANA Time Zone database, e.g. 'UTC' or 'Europe/Amsterdam' etc.
;default_timezone = browser
[expressions]
# Enable or disable the expressions functionality.
;enabled = true
[geomap]
# Set the JSON configuration for the default basemap
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:
@@ -8,13 +8,13 @@ Grafana supports the [following databases](https://grafana.com/docs/installation
- [PostgreSQL](https://www.postgresql.org/)
- [SQLite3](https://www.sqlite.org/)
Grafana uses the [XORM](https://xorm.io) framework for persisting objects to the database. For more information on how to use XORM, refer to the [documentation](http://gobook.io/read/github.com/go-xorm/manual-en-US/).
Grafana uses the [XORM](https://xorm.io) framework for persisting objects to the database. For more information on how to use XORM, refer to the [documentation](https://gobook.io/read/gitea.com/xorm/manual-en-US/).
[Services](services.md) don't use XORM directly. Instead, services use the _SQL store_, a special type of service that provides an abstraction for the database layer. There are two ways of using the `sqlstore`: using `sqlstore` handlers, and using the `SqlStore` instance.
[Services](services.md) don't use XORM directly. Instead, services use the _SQL store_, a special type of service that provides an abstraction for the database layer. There are two ways of using the `sqlstore`: using `sqlstore` handlers, and using the `SQLStore` instance.
## `sqlstore` handlers
> **Deprecated:** We are deprecating `sqlstore` handlers in favor of using the `SqlStore` object directly in each service. Since most services still use the `sqlstore` handlers, we still want to explain how they work.
> **Deprecated:** We are deprecating `sqlstore` handlers in favor of using the `SQLStore` object directly in each service. Since most services still use the `sqlstore` handlers, we still want to explain how they work.
The `sqlstore` package allows you to register [command handlers](communication.md#handle-commands) that either store, or retrieve objects from the database. `sqlstore` handlers are similar to services:
_, 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`
## `SQLStore`
As opposed to a `sqlstore` handler, the `SqlStore` is a service itself. The `SqlStore` has the same responsibility however: to store and retrieve objects, to and from the database.
As opposed to a `sqlstore` handler, the `SQLStore` is a service itself. The `SQLStore` has the same responsibility however: to store and retrieve objects, to and from the database.
To use the `SqlStore`, inject the `SQLStore` in your service struct:
To use the `SQLStore`, inject it in your service struct:
```go
type MyService struct {
SQLStore *sqlstore.SqlStore `inject:""`
SQLStore *sqlstore.SQLStore `inject:""`
}
```
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:
Grafana uses the [inject](https://github.com/facebookgo/inject) package to inject dependencies during runtime.
Grafana uses the [inject](https://github.com/facebookgo/inject) package to inject dependencies during runtime.
For example, to access the [bus](communication.md), add it to the `MyService` struct:
@@ -67,3 +67,7 @@ type MyService struct {
```
> **Note:** Any injected dependency needs to be an exported field. Any unexported fields result in a runtime error.
## 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:
[BackendSrv](https://grafana.com/docs/grafana/latest/packages_api/runtime/backendsrv) handles all outgoing HTTP requests from Grafana. This document explains the high-level concepts used by `BackendSrv`.
## Canceling requests
This section describes how canceling requests work in Grafana. While data sources can implement their own cancellation concept, we recommend that you use the method we describe here.
A data request can take a long time to finish. During the time between when a request starts and finishes, the user can change context. For example, the user may navigate away or issue the same request again.
If we wait for canceled requests to complete, it might create unnecessary load on data sources.
Grafana uses a concept called _request cancelation_ to cancel any ongoing request that Grafana doesn't need.
#### Before Grafana 7.2
Before Grafana can cancel any data request, it has to identify that request. Grafana identifies a request using the property `requestId` [passed as options](https://github.com/grafana/grafana/blob/main/docs/sources/packages_api/runtime/backendsrvrequest.md) when you use [BackendSrv](https://grafana.com/docs/grafana/latest/packages_api/runtime/backendsrv).
The cancellation logic is as follows:
- When an ongoing request discovers that an additional request with the same `requestId` has started, then Grafana will cancel the ongoing request.
- When an ongoing request discovers that the special "cancel all requests" `requestId` was sent, then Grafana will cancel the ongoing request.
#### After Grafana 7.2
Grafana 7.2 introduced an additional way of canceling requests using [RxJs](https://github.com/ReactiveX/rxjs). To support the new cancellation functionality, the data source needs to use the new `fetch` function in [BackendSrv](https://grafana.com/docs/grafana/latest/packages_api/runtime/backendsrv).
Migrating the core data sources to the new `fetch` function [is an ongoing process that you can read about in this issue.](https://github.com/grafana/grafana/issues/27222)
## Request queue
Depending on how the web browser implements the protocol for HTTP 1.1, it will limit the number of parallel requests, lets call this limit _max_parallel_browser_request_.
Unless you have configured Grafana to use HTTP2, the browser limits parallel data requests according to the browser's implementation. For more information on how to enable HTTP2, refer to [Configuration](https://grafana.com/docs/grafana/latest/administration/configuration/#protocol).
Because there is a _max_parallel_browser_request_ limit, if some of the requests take a long time, they will block later requests and make interacting with Grafana very slow.
#### Before Grafana 7.2
Not supported.
#### After Grafana 7.2
Grafana uses a _request queue_ to process all incoming data requests in order while reserving a free "spot" for any requests to the Grafana API.
Since the first implementation of the request queue doesn't take into account what browser the user uses, the _request queue_ limit for parallel data source requests is hard-coded to 5.
> **Note:** Grafana instances [configured with HTTP2 ](https://grafana.com/docs/grafana/latest/administration/configuration/#protocol) will have a hard coded limit of 1000.
@@ -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,22 @@ 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.
### Backend-specific guidelines
Please refer to the [backend style guidelines](/contribute/style-guides/backend.md).
## Code review
Once you've created a pull request, the next step is to have someone review your change. A review is a learning opportunity for both the reviewer and the author of the pull request.
@@ -93,3 +109,11 @@ The Grafana team _squashes_ all commits into one when we accept a pull request.
We use the pull request title when we generate change logs for releases. As such, we strive to make the title as informative as possible.
Make sure that the title for your pull request uses the same format as the subject line in the commit message.
## Configuration changes
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,11 +26,12 @@ We recommend using [Homebrew](https://brew.sh/) for installing any missing depen
```
brew install git
brew install go
brew install node@12
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 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/).
## Download Grafana
We recommend using the Git command-line interface to download the source code for the Grafana project:
@@ -76,7 +83,10 @@ When you log in for the first time, Grafana asks you to change your password.
#### Building on Windows
The Grafana backend includes Sqlite3 which requires GCC to compile. So in order to compile Grafana on Windows you need to install GCC. We recommend [TDM-GCC](http://tdm-gcc.tdragon.net/download).
The Grafana backend includes SQLite which requires GCC to compile. So in order to compile Grafana on Windows you need to install GCC. We recommend [TDM-GCC](http://tdm-gcc.tdragon.net/download). Eventually, if you use [Scoop](https://scoop.sh), you can install GCC through that.
You can simply build the back-end as follows: `go run build.go build`. The Grafana binaries will be in bin\\windows-amd64.
Alternately, if you wish to use the `make` command, install [Make for Windows](http://gnuwin32.sourceforge.net/packages/make.htm) and use it in a Unix shell (f.ex. Git Bash).
## Test Grafana
@@ -87,7 +97,7 @@ The test suite consists of three types of tests: _Frontend tests_, _backend test
We use [jest](https://jestjs.io/) for our frontend tests. Run them using Yarn:
```
yarn jest
yarn test
```
### Run backend tests
@@ -98,6 +108,14 @@ If you're developing for the backend, run the tests with the standard Go tool:
go test -v ./pkg/...
```
#### On Windows
Running the backend tests on Windows currently needs some tweaking, so use the build.go script:
```
go run build.go test
```
### Run end-to-end tests
The end to end tests in Grafana use [Cypress](https://www.cypress.io/) to run automated scripts in a headless Chromium browser. Read more about our [e2e framework](/contribute/style-guides/e2e.md).
@@ -162,7 +180,7 @@ make devenv sources=influxdb,loki
The script generates a Docker Compose file with the databases you specify as `sources`, and runs them in the background.
See the repository for all the [available data sources](/devenv/docker/blocks). Note that some data sources have specific Docker images for macOS, e.g. `prometheus_mac`.
See the repository for all the [available data sources](/devenv/docker/blocks). Note that some data sources have specific Docker images for macOS, e.g. `nginx_proxy_mac`.
@@ -39,3 +39,62 @@ Tests must use the standard library, `testing`. For assertions, prefer using [te
The majority of our tests uses [GoConvey](http://goconvey.co/) but that's something we want to avoid going forward.
In the `sqlstore` package we do database operations in tests and while some might say that's not suited for unit tests. We think they are fast enough and provide a lot of value.
### Assertions
Use respectively [`assert.*`](https://github.com/stretchr/testify#assert-package) functions to make assertions that
should _not_ halt the test ("soft checks") and [`require.*`](https://github.com/stretchr/testify#require-package)
functions to make assertions that _should_ halt the test ("hard checks"). Typically you want to use the latter type of
check to assert that errors have or have not happened, since continuing the test after such an assertion fails is
chaotic (the system under test will be in an undefined state) and you'll often have segfaults in practice.
### Sub-tests
Use [`t.Run`](https://golang.org/pkg/testing/#T.Run) to group sub-test cases, since it allows common setup and teardown
code, plus lets you run each test case in isolation when debugging. Don't use `t.Run` to e.g. group assertions.
### Cleanup
Use [`t.Cleanup`](https://golang.org/pkg/testing/#T.Cleanup) to clean up resources in tests. It's a less fragile choice than `defer`, since it's independent of which
function you call it in. It will always execute after the test is over in reverse call order (last `t.Cleanup` first, same as `defer`).
## Globals
As a general rule of thumb, avoid using global variables, since they make the code difficult to maintain and reason
about, and to write tests for. The Grafana codebase currently does use a lot of global variables, especially when
it comes to configuration, but that is a problem we're trying to solve.
## Pointers
In general, use value types and only reach for pointers when there's a real need. The reason being that pointers
increase the risk of bugs, since a pointer can be nil and dereferencing a nil pointer leads to a panic (AKA segfault).
Valid reasons to use a pointer include (but not necessarily limited to):
* You might need to pass a modifiable argument to a function
* Copying an object might incur a performance hit (benchmark to check your assumptions, copying is often faster than
allocating heap memory)
* You might *need*`nil` to tell if a variable isn't set, although usually it's better to use the type's zero
value to tell instead
## Database
In database related code, we follow certain patterns.
### Foreign keys
While they can be useful, we don't generally use foreign key constraints in Grafana, for historical and
technical reasons. See this [comment](https://github.com/grafana/grafana/issues/3269#issuecomment-383328548) by Torkel
for context.
### Unique columns
If a column, or column combination, should be unique, add a corresponding uniqueness constraint through a migration.
## JSON
The simplejson package is used a lot throughout the backend codebase, but it's legacy, so if at all possible
avoid using it in new code. Use [json-iterator](https://github.com/json-iterator/go) instead, which is a more performant
drop-in alternative to the standard [encoding/json](https://golang.org/pkg/encoding/json/) package. While encoding/json
is a fine choice, profiling shows that json-iterator may be 3-4 times more efficient for encoding. We haven't profiled
its parsing performance yet, but according to json-iterator's own benchmarks, it appears even more superior in this
This style guide applies to all documentation created for Grafana products.
For information about how to write technical documentation, we suggest reviewing the content of the [Google Technical Writing courses](https://developers.google.com/tech-writing).
For information about how to write technical documentation, refer to the following resources:
The [Divio documentation system](https://documentation.divio.com/) site and the [Vue writing principles](https://v3.vuejs.org/guide/contributing/writing-guide.html#principles) are also good resources.
@@ -12,76 +14,97 @@ The *Documentation style guide* is a living document. Add to it whenever a style
## Published guides
For all items 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
The [codespell](https://github.com/codespell-project/codespell) tool is run for every change to catch common misspellings.
To catch common misspellings, the [codespell](https://github.com/codespell-project/codespell) tool is run for every change.
## Inclusive language
This section provides guidelines on how to avoid using charged language in documentation.
Avoid using charged language.
### Allowing and blocking
Don't use "whitelist" or "blacklist" when referring to allowing or blocking content or traffic.
When referring to _allowing_ or _blocking_ content or traffic, use a form of _allow_ or _block_:
-When used as a noun, use "allowlist" or "blocklist".
-When used as a verb, use "allow" or "block"
-(noun) _allowlist_ or _blocklist_
-(verb) _allow_ or _block_
Example: _To **allow** outgoing traffic, add the IP to the **allowlist**._
### Leader and follower
Avoid _whitelist_ or _blacklist_.
Don't use "master" or "slave" to describe relationships between nodes or processes.
### Primary and secondary
- Use "leader", "main" or "primary," instead of "master."
- Use "follower" or "secondary," instead of "slave."
To describe relationships between nodes or processes, there are several options:
### Exceptions
- Use _primary_, _main_, or _parent_, instead of _master_.
- Use _secondary_, _replica_, or _child_, instead of _slave_.
When referring to a configuration or settings used by third-party libraries och technologies outside the Grafana project, prefer the original name to avoid confusion.
For example, use "master" when referring to the default Git branch.
Avoid _master_ or _slave_.
## Grafana-specific style
The following sections provide general guidelines on topics specific to Grafana documentation. Note that for the most part, these are *guidelines*, 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
- Use active voice. Avoid passive voice.
- Passive: The heatmap visualization is displayed.
- Use active voice:
- Active: Grafana displays the heatmap visualization.
-Write in the imperative second person. Examples: You can write a query. Click the panel. Close the window.
- Write in present tense.
-Not: The panel will open.
-Use: The panel opens. Grafana opens the panel.
-Do not use an ampersand (&) as an abbreviation for "and."
-Passive: The heatmap visualization is displayed.
- Write directly to the reader:
-Use: "After you create a dashboard, you can add a panel to it."
-Avoid: "After you create a dashboard, it is possible to add a panel to it."
-Write in the imperative second person:
- "Click the panel."
- "Close the window."
- Write in present tense:
- Use: "The panel opens."
- Avoid: "The panel will open."
- Do not use an ampersand (&) as an abbreviation for _and_.
- **Exceptions:** If an ampersand is used in the Grafana UI, then match the UI.
- Avoid using internal slang and jargon in technical documentation.
- Do not use two spaces after a period. Only add one space after each sentence. Do not add a space at the end of the paragraph.
-Sentence length should be 25 words or less. If your thought is longer than 25 words, consider breaking up the sentence or changing the format to a list.
-Paragraphs should be three sentences or fewer. Break up long paragraphs.
- Avoid using internal jargon or slang.
- Do not use two spaces after a period; use one space after a sentence.
-Remove any extra space characters at the end of a paragraph.
-Aim for your sentences to be fewer than 25 words. Instead, use smaller complete phrases or change the format, such as using a list.
- Aim for paragraphs to be three sentences or fewer. Make the text more concise, use more headings, or both.
### File naming conventions
- Files that are displayed in the help system should have names that are all lowercase, no spaces. Use hyphens instead of spaces. Example: glossary.md
- Documentation file names should match the title. **Note:** This only applies to new files at this time. Do not change the names of older files unless directed to do so.
- Internal reference file names should be all uppercase except the file extension. Example: CONTRIBUTING.md
- Image file names should be descriptive and unique. Also, add the software version number that the image applies to or the screenshot was taken in. Example: share-dashboard-link-7-3.png
### Headings
- Write headings in sentence case, not title case.
- This is sentence case
- This Is Title Case
- This is Title Case
- Task topic headings start with a verb.
- Write a query. Create a dashboard.
- Write a query
- Create a dashboard
- Concept and reference topic headings should be nouns or gerunds. Examples: Contributing to docs, Visualizations, Style guide
- Avoid following one heading with another heading.
#### Heading don'ts
- Avoid stacked headings, which is following one heading with another heading.
- Avoid skipping heading levels. For example, an h1 should be followed by an h2 rather than an h3.
- Avoid having just one lower-level heading. For example, h1, h2, h2, h3, h3, h2 is a good order. Do not go h1, h2, h3, h2, h3, h2.
-Don't include parenthetical words like (Important!) in headings.
- Avoid having just one lower-level heading. For example, h1, h2, h2, h3, h3, h2, h2 is a good order. Do not go h1, h2, h3, h2, h3, h2.
-Avoid using hyphens in headings.
- Do not include parenthetical words like (Important!) in headings.
#### Step-by-step headings
In most cases, headings should not be numbered steps.
However, sometimes we need to use headings as numbered steps. This is mostly in cases where each step is complex or a series of other procedures. For example, in [Getting started with Grafana and Prometheus](https://grafana.com/docs/grafana/latest/getting-started/getting-started-prometheus/).
If that is the case, then use the following format for headings:
##### Step 1. Install the software
##### Step 2. Run the software
### Images
@@ -91,12 +114,21 @@ The following sections provide general guidelines on topics specific to Grafana
- Assume all graphics will be exclusively viewed on the web.
- Maximum image size is 3840px X 2160px.
- Screenshots should be readable, but not too large.
- _Do not_ use image shortcodes. Follow the guidance in the [Grafana markdown guide](https://github.com/grafana/grafana/blob/main/contribute/style-guides/documentation-markdown-guide.md#images).
- 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.
- API names are always Title Case, followed by "API"—for example, "Dashboard Permissions API"
- Git is always capitalized, unless part of a code block.
- Abbreviations are always capitalized (such as API, HTTP, ID, JSON, SQL, or URL) unless they are part of a code block.
- Menu and submenu titles always use sentence case: capitalize the first word, and lowercase the rest.
- "Dashboards" when referring to the submenu title.
@@ -106,6 +138,34 @@ The following sections provide general guidelines on topics specific to Grafana
- Lowercase "dashboards" when referring to multiple dashboards.
- **Exceptions:** If a term is lowercased in the Grafana UI, then match the UI.
#### Git, GitHub
Git is always capitalized, unless part of a code block. GitHub is the correct spelling and capitalization.
#### Integrations
In general, "integration" is not capitalized. Only capitalize it if it is capitalized in the UI or part of a proper noun, like the name of a specific integration.
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
- I installed an integration on my local Grafana.
#### Kubernetes objects
Capitalize Kubernetes objects such as Job, Pod, and StatefulSet when it is clear you are specifically talking about them and not generic jobs, pods, or whatever.
Introduce the object as "Kubernetes XX" on the first usage, then just the object in subsequent uses.
**Example:**
Create the Kubernetes Job and check the logs to retrieve the generated token:
The Job requires the token be submitted as …
### Links and references
When referencing another document, use "Refer to" rather than alternatives such as "See" or "Check out."
@@ -152,9 +212,8 @@ 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.
- **Wrong:** `$ sudo yum install grafana`
- **Right:** `sudo yum install grafana`
- **Wrong:** `$ sudo yum install grafana`
- Include `sudo` before commands that require `sudo` to work.
Grafana products has some words, abbreviations, and terms particular to the Grafana discourse community.
#### changelog
One word, not two.
**Example**
- Read the full changelog.
**Exception:**
- When referring to the file containing the official changelog, use the filename: `CHANGELOG.md`.
#### checkout, check out
Two words if used as a verb, one word if used as a noun.
@@ -185,7 +256,7 @@ Two words if used as a verb, one word if used as a noun.
#### data source
Two words, not one
Two words, not one.
**Exceptions:**
- "datasource" used as an identifier
@@ -213,12 +284,25 @@ Do not use. This is developer jargon that refers to a UI panel. Refer to the pan
One word, not two.
#### mixin
One word, not two. Also, not hyphenated.
#### open source, open-source
Do not hyphenate when used as an adjective unless the lack of hyphen would cause confusion. For example: _Open source software design is the most open open-source system I can imagine._
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.
@@ -227,3 +311,22 @@ 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
When referencing the Prometheus data source exporters, always use "node_exporter" and "windows_exporter" when referring to those tools.
**Correct:** node_exporter, windows_exporter
**Incorrect:** Node Exporter, node exporter, Windows Exporter, Windows exporter, windows exporter.
#### web server
Two words, not one.
**Correct:** web server
**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.
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 above example for example might read aloud to a user "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:
It is possible to infer connected props automatically from `mapStateToProps` and `mapDispatchToProps` using a helper type `ConnectedProps` from Redux. For this to work the `connect` call has to be split into two parts.
@@ -64,13 +64,13 @@ To link a component’s stories with an MDX file you have to do this:
```jsx
// In TabsBar.story.tsx
import{TabsBar}from"./TabsBar";
import{TabsBar}from'./TabsBar';
// Import the MDX file
importmdxfrom"./TabsBar.mdx";
importmdxfrom'./TabsBar.mdx';
exportdefault{
title:"General/Tabs/TabsBar",
title:'General/Tabs/TabsBar',
component:TabsBar,
parameters:{
docs:{
@@ -93,8 +93,8 @@ There are some things that the MDX file should contain:
```jsx
// In MyComponent.mdx
import{Props}from"@storybook/addon-docs/blocks";
import{MyComponent}from"./MyComponent";
import{Props}from'@storybook/addon-docs/blocks';
import{MyComponent}from'./MyComponent';
<Propsof={MyComponent}/>;
```
@@ -141,39 +141,66 @@ interface MyProps {
}
```
### Knobs
### Controls
Knobs is an [addon to Storybook](https://github.com/storybookjs/storybook/tree/master/addons/knobs) which can be used to easily switch values in the UI. A good use case for it is to try different props for the component. Using knobs is easy. Grafana is set up so knobs can be used straight out of the box. Here is an example of how you might use it.
The [controls addon](https://storybook.js.org/docs/react/essentials/controls) provides a way to interact with a component's properties dynamically and requires much less code than knobs. We're deprecating knobs in favor of using controls.
```jsx
// In MyComponent.story.tsx
#### Migrating a story from Knobs to Controls
import{number,text}from"@storybook/addon-knobs";
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.
exportconstbasicStory=()=>(
<MyComponent
max={number("Max value",10)}
min={number("Min value",-10)}
title={text("Title","Look at the value!")}
/>
);
```
1. Remove the `@storybook/addon-knobs` dependency.
2. Import the Story type from `@storybook/react`
The general convention is that the first parameter of the knob is its name and the second is the default value. There are some more types:
In more complex cases, especially when you need to style multiple DOM elements in one component, or when using styles that depend on properties and/or state, you should create a helper function that returns an object of styles. This function should also be wrapped in the `stylesFactory` helper function, which will provide basic memoization.
Let's say you need to style a component that has a different background depending on the theme:
Let's say you need to style a component that has a different background depending on the `isActive` property :
**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,4 +45,22 @@ 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 |
### 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.
File diff suppressed because it is too large
Load Diff
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.