* add base
* Update docs/sources/whatsnew/whats-new-in-v7-3.md
* Update What's new in 7.3 with CM OOTB dashboards
* Docs: enterprise whats new placeholders
* Add short url info
* Update shorten url after pull
* Update docs/sources/whatsnew/whats-new-in-v7-3.md
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
Co-authored-by: Sofia Papagiannaki <sofia@grafana.com>
Co-authored-by: Leonard Gram <leo@xlson.com>
Co-authored-by: Ivana <ivana.huckova@gmail.com>
* Add short link functionality to Explore and Rich history
* Update documentation
* Implement short url for explore
* Implement short link in Rich history
* Update docs
* Add error alert
* updated to latest version of api-documenter.
* saved lockfile after upgrade.
* adding yarn to docker environment.
* adding packages to trigger paths.
* added steps to workflow for generating docs.
* reverted back to api-documenter 0.9.3
* Cloud monitoring: out-of-the-box dashboards
* Remove redundant information related to dev account
* Update docs/sources/features/datasources/cloudmonitoring.md
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
* Rename JSON files
* Fix docs
* Fixe docs
* Parameterise dashboards by CM datasource
* Fix metric kind in CloudSQL dashboard
* Set alias to instance name for GCE dashboard panels
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
* openshift wip
* Docker: switches from grafana group to root group
* Docker: make group fully configurable
* Docker: create custom grafana group if needed
* Docker: removes duplicated group permission
* Docker: more unneccesary changes
* fixing so we will present a better error message when loading ad hoc filter variables.
* added tests to verify url parsing.
* added a test to make sure it works the oppisite way.
* intial frontend resolution/redirection logic
* backend scaffolding
* enough of the frontend to actually test end to end
* bugfixes
* add tests
* cleanup
* explore too hard for now
* fix build
* Docs: add docs
* FE test
* redirect directly from backend
* validate incoming uids
* add last_seen_at
* format documentation
* more documentation feedback
* very shaky migration of get route to middleware
* persist unix timestamps
* add id, orgId to table
* fixes for orgId scoping
* whoops forgot the middleware
* only redirect to absolute URLs under the AppUrl domain
* move lookup route to /goto/:uid, stop manually setting 404 response code
* renaming things according to PR feedback
* tricky deletion
* sneaky readd
* fix test
* more BE renaming
* FE updates -- no more @ts-ignore hacking :) and accounting for subpath
* Simplify code
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
* Short URLs: Drop usage of bus
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
* ShortURLService: Make injectable
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
* Rename file
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
* Add handling of url parsing and creating of full shortURL to backend
* Update test, remove unused imports
* Update pkg/api/short_urls.go
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* Add correct import
* Pass context to short url service
* Remove not needed error log
* Rename dto and field to denote URL rather than path
* Update api docs based on feedback/suggestion
* Rename files to singular
* Revert to send relative path to backend
* Fixes after review
* Return dto when creating short URL that includes the full url
Use full url to provide shorten URL to the user
* Fix after review
* Fix relative url path when creating new short url
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
Co-authored-by: Ivana <ivana.huckova@gmail.com>
Co-authored-by: Ivana Huckova <30407135+ivanahuckova@users.noreply.github.com>
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
* NamedColors: Refactoring, performance improvements, and simplifications
* More simplifification
* Updated to use new function
* Updates
* Updates
* Updated BarGauge to use fallback color intead of magic string
* Updates
* Fixed unused import
* Add tempo datasource, mostly copy of jaeger datasource code
* Add label to input field
* Add logo
* Remove access option from configuration
* Add white space to field label
* Add documentation
* Fix link in docs
* Update public/app/plugins/datasource/tempo/ConfigEditor.tsx
Co-authored-by: Zoltán Bedi <zoltan.bedi@gmail.com>
* Update public/app/plugins/datasource/tempo/QueryField.tsx
Co-authored-by: Zoltán Bedi <zoltan.bedi@gmail.com>
* Add data source to the docs menu
* Add simple implementation for testDatasource
* Wording updates to the docs.
Co-authored-by: Zoltán Bedi <zoltan.bedi@gmail.com>
Hi - I have observed Dot(.) is missing in many places of paragraphs in document. So raising this PR.
Added Dot(.) to below line
This page shows how to use regex to filter/modify values in the variable dropdown.
Thanks,
Ashish
Add non-unique indices to alert_notification_state and alert_rule_tag tables for
column alert_id.
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
Fixes#22890
* expire with existng cleanup service
* expire with new temp user service
* make Drone happy :)
* add expiry status
* remove other approach
* cleanup
* add test for idempotency
* add migration from datetime to unix ts
* update cmd names
* change lifetime config to duration
* remove unnecessart formatting
* add comment
* update docs
* remove max bound and introduce min error
* simplify sql
* remove comment
* allow any outstanding to exist for at least 24 hours
* revert created ts change
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
* add extra state check to cleanup step
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
* end 2 end
* fix import
* refactor
* introduce securedata
* check err
* use testify instead of convey
* cleanup test
* cleanup test
* blob time
* rename funcs
* New feature toggle for enabling alerting NG
* Initial commit
* Modify evaluate alert API request
* Check for unique labels in alert execution result dataframes
* Remove print statement
* Additional minor fixes/comments
* Fix lint issues
* Add API endpoint for evaluating panel queries
* Push missing renaming
* add refId for condition to API
* add refId for condition to API
* switch dashboard based eval to get method
* add from/to params to dashboard based eval
* add from/to params to eval endpoint
Co-authored-by: kyle <kyle@grafana.com>
Prefixes SigV4 json data and secure json data keys with sigV4 to make
sure they don't collide with any other settings. Also minor fixes to UI.
Ref #27552
* Add UI license upload option, reformat Enterprise license activation section
Added the option to upload a license file through the Server Admin UI, and did a little reformatting to make license activation look more like a process.
* Headers not bold, hyphens not asterisks
* Fix showing of data in explore's query inspector
* Add test
* Add test
* Updat etest
* Implement react-testing-library and remove props export
* Update tests for consistency
* Use annotations data observable
* WIP exemplars
* Refactor usePlotContext to use getters instead of properties
* Use DataFrame in EventsCanvas instead of custom type
* Minor tweaks
* fix: Use locale to find delimiter for CSV export
* Add sep= Excel header to CSV exporter
* Add modal for Excel export
* Move Excel download to 'Data options' as toggle
* Add 'Download for Excel' documentation
* FieldColor: Added field color option
* Progress
* FieldColor: Added custom schemes
* move to fieldColor
* move to fieldColor
* add back the standard color picker
* FieldColor: Added registry for field color modes
* wip refactor
* Seperate scale from color mode
* Progress
* schemes working
* Stuff is working
* Added fallback
* Updated threshold tests
* Added unit tests
* added more tests
* Made it work with new graph panel
* Use scale calculator from graph panel
* Updates
* Updated test
* Renaming things
* Update packages/grafana-data/src/field/displayProcessor.ts
Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
* updated according to feedback, added docs
* Updated docs
* Updated
* Update docs/sources/panels/field-options/standard-field-options.md
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
* Update docs/sources/panels/field-options/standard-field-options.md
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
* Updated docs according to feedback
* fixed test
* Updated
* Updated wording
* Change to fieldState.seriesIndex
* Updated tests
* Updates
* New names
* More work needed to support bar gauge and showing the color modes in the picker
* Now correct gradients work in bar gauge
* before rename
* Unifying the concept
* Updates
* review feedback
* Updated
* Skip minification
* Updated
* UI improvements
Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
* SAML: single logout WIP
* SAML: sign SAML requests
* SAML: remove unnecessary logs
* fix go mod file
* Docs: Single Logout
* SAML: use api endpoint for single logout
* Apply suggestions from code review
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
* SAML: save context for single logout
* Chore: add SAML dependencies
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
* Automation: Adds github automation commands, and base architecture to build more automation on
* Updated commmand
* updated commands
* Updated token name
* WIP: changes transformer API to Observable
* Refactor: changes ResultProcessor
* WIP: TransformationUI
* wip
* Refactor: Cleaning up code in CalculateFieldTransformerEditorProps
* Refactor: pushing editor and input output down to TransformationEditor
* Refactor: renaming props
* Refactor: makes transformDataFrame more readable
* Refactor: fixes editor issues
* Refactor: changes after merge with master and first tests
* Tests: completes the tests for the Explore changes
* Tests: fixes all transform tests
* Tests: fixed annotations test
* Tests: fixed typechecks
* Refactor: changes transform interface to MonoTypeOperatorFunction
* Chore: cleans up typings
* Update packages/grafana-data/src/transformations/transformDataFrame.ts
Co-authored-by: Marcus Andersson <marcus.andersson@grafana.com>
* Tests: fixes broken tests
Co-authored-by: Marcus Andersson <marcus.andersson@grafana.com>
* Cloudwatch: Add support for AWS DirectConnect virtual interface metrics.
* Cloudwatch: Adding dimentions to the AWS/DX namespace for virtual network interface based DirectConnect.
* FieldDisplayName: Make field display names unique if fields with same name exists
* Updated tests
* Minor optimization
* Updated seriesToColumns test
* Fixed arrow data frame test
* Document Update
Changes made from "are" to "is"
* Document Update
Changes from "are" to "is"
* Document Update
Changes from "are" to "is"
* Document Update
Proper punctuations
* Document Update
Changes as per suggestion
* Document update
Changes as per the suggestion
* Document Update
Changes as per the suggestion
* Document Changes
Changes made as per @achatterjee-grafana suggestion
* Document Update
Changes made as per @oddlittlebird suggestion.
* Docs: Added $__rate_interval to Prometheus help
The variable '$__rate_interval' was added in Grafana 7.2.0. This commit
adds the missing help information to Grafana's Prometheus PromQueryEditor.
Signed-off-by: David Calvert <davidcalvertfr@gmail.com>
* Docs: Fixed line length in PromQueryEditor.tsx
This commit will fix line length of my previous commit to make CI green
again.
Signed-off-by: David Calvert <davidcalvertfr@gmail.com>
* Docs: Fixed ci error
Fixed CI error due to my previous commits
Signed-off-by: David Calvert <davidcalvertfr@gmail.com>
* Refactor: Replaces initLock with state machine
* Refactor: removes some states for now
* Refactor: adds loading state in OptionsPicker
* Refactor: major refactor of load state
* Refactor: fixes updating graph in parallell
* Refactor: moves error handling to updateOptions
* Refactor: fixes the last cases
* Tests: disables variable e2e again
* Chore: removes nova config
* Refactor: small changes when going through the code again
* Refactor: fixes typings
* Refactor: changes after PR comments
* Refactor: split up onTimeRangeUpdated and fixed some error handling
* Tests: removes unused func
* Tests: fixes typing
* Changes. to metadata in Manage users
* changes to install section
* Added titile
* More changes.
* Updated administration folder metadata, moved 2 files from installation folder.
* Added links to Administration landing page, other metadata changes worked out.
* Updated alerting section metadata.
* Updated metadata of Auth section. Broke index and created separate Grafana Authentication section.
* Added correct weight.
* Updated metadata for the Best practices section.
* Updated metadata in templates, broke Overview topic.
* Updated subment Variable types metadata
* Fixed yaml file and H1 description of Variables syntax topic.
* Couple more metadata changes.
* Added aliases files, as suggested by Diana.
* Delete stack_guide_graphite.md
* moved json-model
* Moved Export and import
* Delete _index.md
* Moved Scripted dashboards
* Moved Share dashboard
* fixed links
* Chore: Remove angular dependency from data sources
* Removes default export for time and template srvs
Also uses @grafana/runtime versions of the interfaces where possible
* Replace usage of internal templateSrv where possible
* Use runtime templateSrv in a couple more places
* CI: Upgrade build pipeline tool
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
* Drone: Don't bump NPM package version as part of script
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
* cleaned up release next packages script.
* made the comment a bit better.
Co-authored-by: Marcus Andersson <marcus.andersson@grafana.com>
* Add typing to prometheus response
* Refactor result_transformer to return DataFrame
* Refactor + test fixes
* Fix Prometheus data source test
* Modify heatmap function + add back tests
* Update performInstantQuery return type
* Remove duplicate code from result_transformer
* Address review comments
* Update metric labels retrival logic to be safer
* Minor change for better readability of docs
* Update docs/sources/developers/plugins/backend/plugin-protocol.md
Accepting review suggestions
Co-authored-by: Marcus Olsson <marcus.olsson@hey.com>
Co-authored-by: Marcus Olsson <marcus.olsson@hey.com>
* Notify failures in separate pipeline
* Include branch and event in triggers
* Use snake case
* Use snake case
* Fix enterprise/downstream
* Apply suggestions from code review
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* removed dependency from grafana/ui on public/app.
* fixed so we don't get rollup issues when building the packages.
* fixed so import path is working properly.
* removed uncommented code.
* Fix gdev dashboard
* API for declarative Axis, Series and Scales configuration
* Bring back time zone change support
* Update tests and fix type errors
* Review comments and fixes
* use new inline form styles
* remove fragment
* rename some of the GEL form labels
* s/gel type/operation for label
Co-authored-by: kyle <kyle@grafana.com>
* minor nits in paneleditor
* add events for queries and transformations
* fix spelling
* add event to alertctrl
* revert alert changes
* re add force update
* reduce events
* moved files out of tutorials folder
* link update
* updated weights
* moved Explore
* move files and fix links
* moved files out of features
* Revert "moved files out of features"
This reverts commit 5e44cbcc95.
* fixed links
* Document Update
Grammar correction
* Document correction
Spelling correction from "Gooogle" to "Google"
* Document update
adding a comma, as per suggestion
* topics round two
* more props
* remove Data from enum
* PanelData: Simplify ideas a bit to only focus on the addition of annotations in panel data
* Test data scenario
* Old graph panel showing annotations from PanelData
* Fixed comment
* Fixed issues trying to remove use of event.source
* Added unit test
Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
* Table: Image cell and new hover behavior
* ImageCell: progress
* Table: refactoring cell style generation, tricky stuff
* About to do something
* Getting close
* Need another big change
* Almost everything working
* Filter actions working
* Updated
* Updated
* removed unused prop from interface
* Fixed unit test
* remove unused type
* Squash merge Ryans uPlot work
* uPlot - wrap into composable API
* Remove MicroPlot.tsx
* Add missing uPlot stylesheet import
* Use field config for axes config
* Min selection distance for Zoom
* WIP Tooltip behaviour
* Some progress on rendering plot
* gdev dashboard for graph ng tests
* Update custom field config interface for graph options
* Add support for paths in default field config setup (+2 squashed commits)
Squashed commits:
[93fc3afbfc] Typecheck fix
[a07ef86a8b] Add support for paths in default field config setup
* Include IANA timezone canonical name in TimeZoneInfo
* Use correct time zone on time axis
* Default axis width
* Use system date time formats for time axis ticks
* Graph panel layout
* Respect config paths when rendering default value of field config property
* Fix mismatch in field config editor types
* Color field option editor
* Refactor plot context to a single one
* First version of new graph legend plugin
* Fix mutable data frame
* Multiple ui fixes, layout is still slightly problematic
* Remove unused
* Fix tooltip test
* Some perf optimisations
* Update dev dashboard
* Typecheck fix
* Do not use color value editor as standard property editor, add custom field config to graph panel to control series color
* Update dev dashboard with correct tags
* Fix undefined issues
* Update devenv/dev-dashboards/panel-graph/graph-ng.json
* Document Update
Where to were
* Document Update
"re enter" to "reenter"
* Document Update
"an" to "a"
* Document Update
"an" to "a"
* Document update
"can not " to cannot
* Document update
Changes made from "and by that not function as expected." to "and by that it do not function as expected."
* Document update
Change made from "by that not function as expected" to "by that it does not function as expected"
* Update docs/sources/installation/upgrading.md
Commit, the document based on suggestion
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* Update docs/sources/installation/upgrading.md
Commit the changes as per the suggestion
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* Document update
Changes reverted from "cannot" to "can not" as per the suggestion
* Document Update
Changes as per the suggestion
* Document changes
Changes as per the suggestion
* Document Change
Changes made as per the suggestion
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* Dashboard: Add subUrl to explore url
Honour subUrl when opening explore in new window
* Dashboard: Add tests to onNavigateToExplore
* Dashboard: Remove condition from tests
* Chunking out the long Transformation topic. Also, updated TOC. Local build looks fine.
* More changes.
* More re-arranging of content. Fixed links in Types and Options page.
* Capitalization changes.
* Changes to Overview section.
* Fixed merge conflicts.
* Fixed typo to fix build failure.
* Update docs/sources/panels/transformations/types-options.md
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
* Changes from Diana.
* Fixed a typo in a relref.
* Fixed broken link.
* Update link in Troubleshooting topic.
* Added changes.
* Fixed a bunch of broken links.
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
* Chunking out the long Transformation topic. Also, updated TOC. Local build looks fine.
* More changes.
* More re-arranging of content. Fixed links in Types and Options page.
* Capitalization changes.
* Changes to Overview section.
* Fixed merge conflicts.
* Fixed typo to fix build failure.
* Update docs/sources/panels/transformations/types-options.md
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
* Changes from Diana.
* Fixed a typo in a relref.
* Fixed broken link.
* Update link in Troubleshooting topic.
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
* Make graph and table collapsing just a UI thing
* Remove showingGraph and showingTable, set them defaultly to true
* Remove collaapsing for panels in Explore
* UI toggle WiP
* WIP, add query type
* Refactor, clean up
* Update tests
* Clean uo
* Update rangeAll to range and instant
* Remove console logs
* Update packages/grafana-data/src/types/datasource.ts
Co-authored-by: Zoltán Bedi <zoltan.bedi@gmail.com>
* Update public/app/core/utils/explore.ts
Co-authored-by: Zoltán Bedi <zoltan.bedi@gmail.com>
* Fix prettier error
Co-authored-by: Zoltán Bedi <zoltan.bedi@gmail.com>
* add overflow hidden to titleWrapper
* show ellipsis and css labels for components
* readd drag handle after bad merge
* rewrite userpicker test with rtl
* update test after adding css label to icon component
* fix more tests..
It is confusing as the marketplace plugin is deprecated, and this page indicates that it is **included**, but it is not visible/discoverable by default.
This adds a check to see if plugin route URL is empty, and in such case
does not modify request schema and host of the request to be proxied.
This behavior is now the same as in the plugin proxy.
kuberentes (and Im sure other orchastrators does as well) support two
kind of checks. readiness checks and liveness checks. Grafanas current
`/api/health` endpoint requires database access which might not
always be required for the instance to be considered active.
* SharedQuery: Error when switching to -- Dashboard -- data source made observable subscription error and subsequent data results not update visualization
* added null check just in case
* Removed Datadog-specific fields from config for annotation creation
* Added a custom form config option for annotation creation
* Added regex support to `selectOption`
Add a default timezone that the administrator can set in the settings.
This setting is be used as default for the users timezone preference.
Can be used when creating Grafana instances without administrator
intervention, in order to give user the correct default timezone.
Fixes#25654
* fixed: bigdata dropdown first limit 1000
* fixed: change to use function of applylimit
* fixed: remove both applyLimit callers
* feat: test for new logic with applimit
* feat: test showOptions with the applyLimit logic
* fixed: test equal fixed
Allows login_maximum_inactive_lifetime_duration and
login_maximum_lifetime_duration to be configured using
time.Duration-compatible values while retaining backward compatibility.
Fixes#17554
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
* Fixed so we try to use the variables in the redux store to replace values in template variables.
* First draft of working version.
* Including fieldPath when adding :text format.
* cleaned up code by introducing helper function.
* some minor refactoring.
* Added tests and support for multi variables.
* added test and code to handle the All scenario of a multivariable.
* fixed according to feedback.
* added docs.
* added text format to gdev dashboard.
* updated e2e tests.
* make sure we use the same function for formatting och variable lable.
* increased the number to 22.
* changed label for tests to be All.
* existing format should be respected.
* Alerting API: Send back 404 not found error for update and delete endpoints
* Alerting API: send back alert notification id for delete with uid endpoint
OAuth token refresh fails when custom SSL settings are configured for
oauth provider. These changes makes sure that custom SSL settings
are applied for HTTP client before refreshing token.
Fixes#27514
#26395 introduced a regression regarding sort order of nav tree
items set in Grafana boot data and used for rendering the sidemenu.
This fixes so that sort happens after RunIndexDataHooks is called
in case the hook make changes to the nav tree.
* What's New: some minor edits in the enterprise section
* Update docs/sources/guides/whats-new-in-v7-2.md
Co-authored-by: Emil Tullstedt <emil.tullstedt@grafana.com>
* Update docs/sources/guides/whats-new-in-v7-2.md
Co-authored-by: Emil Tullstedt <emil.tullstedt@grafana.com>
Co-authored-by: Emil Tullstedt <emil.tullstedt@grafana.com>
* Dashboard: Merge Data units categories
Prefixes already allow to distinguish IEC units from SI ones
+ Prefer using binary function over decimal one when equal
* Dashboard: Clarify SI & binary prefixes
* Dashboard: Homogeneise rate units
* Dashboard: Add Binary (IEC) prefix for data rates
Adds some updated upgrade notes for 7.2 regarding secure
settings for alert notification channels. Also adds a section
about this in the What's new article.
Ref #26172
* implement edit page
* connectWithCleanup
* remove angular related code
* use loadingindicator
* use the correct loading component
* handle secureFields
* fixed implementation of secure fields
* Keep secureFields after rerendering the form
* CollapsableSection and Page refactor
* use checkbox instead of switch
* fix comment
* add cursor to section
* Fixed issues after PR review
* Fix issue with some settings being undefined
* new reducer and start with test
* algorithm to migrate secure fields
* UX: Minor UI Tweaks
* Added field around checkboxes, and missing required field
* fixed test
* tests for util
* minor tweaks and changes
* define as records
* fix typ error
* forward invalid to textarea and inputcontrol
* merge formdata and redux data in test
* fix issue with creating channel
* do not figure out securefields in migration
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
* DashboardSettings: Fixes auto refresh crash with space in interval
* Tests: fixes typings
* Refactor: validets onBlur and other PR comments
* Tests: adds component tests
* Refactor: changes after PR feedback
Changes the dimensionsFilters property to dimensionsFilter in the Azure Monitor Datasource's AzureMonitor service to make what is sent to match the saved model.
Before this, the property that the backend was expecting was not available in the case of alerting, where the stored model is fetched.
This also fixes a panic when there is a dimension alias but no dimension
## FilterableTableCell
### added
- added `display: inline-flex` and `align-items: center` to
`tableCellWrapper` class
- added `flex: 1` to `tableCell` class
### removed
- unused imports
- removed ternary if since it has no use anymore
- removed `tableCellWrapper` style definition from stylesFactory
* Make sure repeated panel has inView property set correctly
* Test
* Update public/app/features/dashboard/state/DashboardModel.ts
Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>
Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>
* Explore: Transform prometheus query to elasticsearch query
Enable a way to transform prometheus/loki labels to elasticsearch query.
This make a link between metrics to logs.
Examples:
A prometheus query : rate(my_metric{label1="value1",label2!="value2",label3=~"value.+",label4!~".*tothemoon"}[5m])
Will be this elasticsearch query when switching to elasticsearch datasource: __name__:"my_metric" AND label1:"value1" AND NOT label2:"value2" AND label3:/value.+/ AND NOT label4:/.*tothemoon/
* fix test
* remove non needed async
* Use prism token instead of regex
* fix test ./scripts/ci-frontend-metrics.sh
* mock timesrv and TemplateSrv in test
* Remove unnecessary await/async
Co-authored-by: Melchior MOULIN <m.moulin@criteo.com>
Co-authored-by: Andrej Ocenas <mr.ocenas@gmail.com>
* wip.
* Fixed issue with merge not behaving exactly as the old table panel did.
* Fixed so empty data frames will be exluded prior to trying to merge the result.
* Changed so if passing only empty frames first will only be returned.
* de-duplication of configuration in tests.
Enables creating signed URLs when uploading images to Google Cloud Storage.
By using signed urls, not only is the public URL expiration configurable but the
images in the bucket are not publicly accessible.
Fixes#26773
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
* Add support for local time formats in graph panel
* Enfore 24h format for backward compatibility
* Use existing Intl.DateTimeFormatOptions
* Pre-generate time scale, add tests
* Move localTimeFormat, add local format to units
* updated default fallback
* #25602, use navigator.languages to enforce locale in formatting
* Making options
* Worked new system settings
* things are working
* Local browser time formats working
* Support parsing dates in different formats
* settings updated
* Settings starting to work
* Fixed graph issue
* Logs fix
* refactored settings a bit
* Updated and name change
* Progress
* Changed config names
* Updated
* Updated
* Updated test
* Synced description
* fixed ts issue
* Added version notice
* Ts fix
* Updated heatmap and test
* Updated snapshot
* Updated
* fixed ts issue
* Fixes
Co-authored-by: Alex Shpak <alex-shpak@users.noreply.github.com>
* CloudWatch Logs: Adjusts CloudWatch Logs timeout logic
Previously CloudWatch Logs queries would time out if,
after a number of attempts, a response was received with no additional data.
This commit changes the behavior so that a consecutive number of requests
yielding no additional data must be made before we cancel the query
* API: first version to send events about login actions
* API: improve login actions events
* Login: update auth test with new behavior
* Login: update auth test for auth module
* Login OAuth: improve functions structure
* API: make struct public to use for saml
* API: add send login log tests for grafana and ldap login
* API: remove log from tests
* Login API: fix test linting
* Update pkg/api/login_oauth.go
Co-authored-by: Emil Tullstedt <emil.tullstedt@grafana.com>
* Login API: refactor using defer
Co-authored-by: Emil Tullstedt <emil.tullstedt@grafana.com>
* PanelInspector: Fields with overrides are formatted correct in CSV
* Refactor: adds raw format
* Refactor: changes switch to Formatted values
* Tests: adds tests for applyRawFieldOverrides and getRawDisplayProcessor
* Test: change to utc timeZone
* Refactor: changes after PR comments
Update list of AmazonMQ metrics and Dimensions based on the current list
from the official AWS documentation.
Also, change InflightCount to InFlightCount.
* Table: Adds column filters
* Refactor: adds filter by value function
* Refactor: some styling and sorting
* Refactor: Moves filterByValue to utils
* Tests: add filterByValue tests
* Refactor: simplifies filteredValues
* Refactor: adds dropshadow
* Refactor: keeps icons together with label and aligns with column alignment
* Refactor: hides clear filter if no filter is active
* Refactor: changes how values in filter are populated
* Refactor: adds filterable field override
* Tests: fixed broken tests
* Refactor: adds FilterList
* Refactor: adds blanks entry for non value labels
* Refactor: using preFilteredRows in filter list
* Refactor: adds filter input
* Refactor: fixes issue found by e2e
* Refactor: changes after PR comments
* Docs: adds documentation for Column filter
* Refactor: moves functions to utils and adds tests
* Refactor: memoizes filter function
* Docs: reverts docs for now
* WIP: Fix null thresholds in overrides when loading
* Fix thresholds on load instead of in apply field overrides
* simplify expression
* fixed ts issue
* Updated test
* Updated another test
* Updated another test
60s can be too short if the oauth provider is slow
for some reason and its defintly too slow if the
OAuth provider requires 2FA.
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
* Adding Occurences transformer
* Adding test for Occurences Transformer
* Cleanup. Adding a test.
* Adding doc
* Modifying UI to support custom calculations options
* Implementing data transformation
* Finalizing calculations implementation
* Cleanup
* Using Fields instead of arrays in data grouping
* Renaming transformation to GroupBy
* Adding some doc
* Apply suggestions (solving TS typing errors)
Co-authored-by: Marcus Andersson <systemvetaren@gmail.com>
* Tweaking UI
* Preventing of selecting twice the same field name.
* Removing console print. No calculations by default.
* Forgot to add the current value to the GroupBy selector
* Solving some typing issues and prettyfier errors
* Cleanup
* Updating test
* Ensure proper copy of options (solves some issues)
* Check if the fields exist in the data before processing
* Adding missing import in test file
* If group by field not specified, return all data untouched.
* Adding another missing import in test
* Minor updates
* Implementing GroupBy multiple fields + Improve field typing
* Removing console prints
* Allowing the exact number of fields to be added as aggregation
* Centering remove button icon
* Cleanup
* Correcting TS error
* Chaging transformer options structure
* Sorting so GroupBy fields appear on top
* Cleanup
* Simplifying some operations. Adding curly brackets.
* Changing some labels on the UI
* Updating test
* Cleanup
* Updating doc
* Fixed field list. Storing options as Record instead of Array.
* Update test
* Cleaned up the group by editor UI code.
* changed the transform to a table layout instead of a flexbox layout.
* cleaned up group by transformer.
* removed unused imports.
* Added some more tests.
* Added one more test and cleaned up code.
* fixed failing test.
* Fixed so we we have the proper casing on naming.
* fixed so we don't wrap on the first row.
Co-authored-by: Marcus Andersson <systemvetaren@gmail.com>
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
Co-authored-by: Marcus Andersson <marcus.andersson@grafana.com>
* Storybook: Add vision statement to intro page
Added the vision statement compiled by the Grafana Labs design system knights to the grafana-ui intro section. Feedback and further improvement ideas welcome!
* Review feedback part 1
_fixed headline formatting
_removed numbered list
_removed paragraph "A library of unified components and styles"
_renamed all occurrences to @grafana/ui
_replaced "ideate" with "determine together"
* Minor changes
* Changed default panel screenshot name
* Removed default visualization type from `addPanel` config
... which, unless defined, will use the app's default (graph). This is the new approach for plugins which supports annotations.
* Select timezone from dashboard toolbar instead of settings
... and refactored `setDashboardTimeRange` for reuse on other pages via a now more generalized `setTimeRange`
* Added optional annotations to `addDashboard` config
* Added `explore` flow
… which reuses `configurePanel` which is very similar
* Field naming simple fix
* fixed unit tests
* Updated to use displayNameDS config
* Update packages/grafana-data/src/types/dataFrame.ts
Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
* Updated name
Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
The action name is `tag:GetResources`, not `tags:GetResources`. This creates a confusing error message that can have the user add the wrong permission to the IAM role.
* Chore: Added foldername to the dashboard overview on the startpage
## Dashlist
### added
- new `<span>` containing `dash.folderTitle`
- styling for the newly created `<span>`
### changed
- added sass-nesting to classes in `_panel_dashlist.scss`
closes#26869
* Chore: Added foldername to the dashboard overview on the startpage
## Dashlist
### changed
- added `ng-if` directive to the dashlist-folder span
* Chore: Added foldername to the dashboard overview on the startpage
## Dashlist
### changed
- added folder-icon and removed brackets to indicate `folderTitle`
- changed font-size of folderTitle-`span` and added left margin
* Add grafana/loki dependency and update its dependencies
* Update grpcplugin log_wrapper to implement the latest version of hclog.Logger
* Remove panic handling + test case no longer needed since the source of panics (bug) was fixed
* WIP: strings and numbers
* Works in displayProcessor but units are not applied in applyFieldOverride
* removed bit
* Updated
* Added docs
* fixed typo
* testing things
* POC: Simplify labels to fields by using merge transform inside it
* removed old code
* Fixed test ts issues
* Added valueLabel field option
* Updated merge transform tests to not expect a sort
* fixed type
* refactoring to minimize nesting
* Stats: Cache based stats implementation
* Stats: Correct logic and add larger scale test
* Stats: linter
* Stats: SQL implementation
* Stats: cleanup SQL
* Stats: Tab -> Spaces
* Update pkg/services/sqlstore/stats.go
Co-authored-by: Sofia Papagiannaki <papagian@users.noreply.github.com>
* Stats: Quote 'user' table with dialect.Quote
* Stats: Ensure test is run as integration test
* Stats: Use boolean value
...because if (v) { true } else { false } is unnecessary at best.
Co-authored-by: Sofia Papagiannaki <papagian@users.noreply.github.com>
* Minor changes
* Added an `editPanel` flow function
... and moved the internals of `addPanel` to a common function for use by both
* Added optional template variables to `addDashboard` config
* Use latest Cypress 4.x version
* Updated lockfile
* Added Zenduty Grafana integration to the notifications page
Signed-off-by: Vishwa Krishnakumar <vishwa306@gmail.com>
* Added Zenduty Grafana integration to the list of notifiers table
Signed-off-by: Vishwa Krishnakumar <vishwa306@gmail.com>
* POC for toggling parsed fields in Explore/Loki
* fixed issues
* add clear button for toggled parsed fields
* fix test-frontend failures
* use blue eye instead of eye/eye-slash and update tooltips
* break out parseMessage
* move indicator to meta data section
* clean up LogRowMessageParsed
* better label
* clean up after making optional
* FolderPicker: Fixes not being able to create new folder
* Update public/app/core/components/Select/FolderPicker.tsx
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
* Refactor: Fixes import issues for tests that do not mock GrafanaBootConfig
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
* Refactor: initial commit
* wip
* Refactor: getting into a simpler model
* Refactor: adds some comments
* Refactor: renames statuses according to PR comments
* Refactor: adds more comments
* Tests: adds tests for FetchQueue
* Tests: adds tests for ResponseQueue
* Tests: adds tests for FetchQueueWorker
* Tests: simplified the tests for ResponseQueue
* Refactor: adds http2 scenario
* Refactor: using Cfg instead of global variable
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* Refactor: reverted change in frontendsettings.go
* Tests: fix test mocks
* Fix: changes how cfg.Protocol gets its value
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* Add filter name by regex matcher for overrides
* Update docs
* rever schema change
* add docs for by type
* add docs for by type
* add docs for by type
Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
* added $schema field support in plugin.schema.json
More details can be found in https://github.com/grafana/plugin-validator/issues/1
* Others category in plugin.json, minimum 1 keyword
* Allow others as a category if the plugin doesn't fall into appropriate category. Refer https://github.com/grafana/plugin-validator/issues/3 for more details
* Mandate minimum one keyword for better discovery in plugin repository.
* Dropped enum from plugin.json $schema
* Dashboard: Solve the discrepancy between provisioning and the API, Handle min refresh interval when creating/updating dashboard via API
* Docs: Add refresh field in the example dashboard http api docs
* Update create dashboard API docs
Add refresh field in the create dashboard example response
* Fix create dashboard API docs
* Fix create dashboard API docs
* Update docs/sources/http_api/dashboard.md
Co-authored-by: Sofia Papagiannaki <papagian@users.noreply.github.com>
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
* Remove validation from empty playlists
* Remove redundant API call
Frontend used to call /api/playlists/:id/items directly after /api/playlists/:id but items are already included in the first response
* Add rate interval variable to prometheus data source
* Add tests + auto complete
* Fix prometheus tests
* Add doc
* Modify test title
* Modify kbn method name after merge
* API: Improve error handling (#26934)
* New ErrUserAlreadyExists error has been introduced
* Create user endpoint returns 412 Precondition Failed on ErrUserAlreadyExists errors
* Make ErrUserAlreadyExists error message clearer
Co-authored-by: Emil Tullstedt <emil.tullstedt@grafana.com>
* Use errors.Is instead of equality comparator on AdminCreateUser handler
* Improve sqlstore/user test definition
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* Improve sqlstore/user tests for ErrUserAlreadyExists cases
* Remove no needed string fmt and err declaration on sqlstore/user tests
* Code improvements for sqlstore/user tests
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* Use err.Error() instead of sentinel error value on AdminCreateUser
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* Add ErrUserAlreadyExists handling for signup & org invite use cases
Co-authored-by: Emil Tullstedt <emil.tullstedt@grafana.com>
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* Update LogsDedupStrategy enum to keep consistent with radio button capitalization
* Revert "Update LogsDedupStrategy enum to keep consistent with radio button capitalization"
This reverts commit 0b05cd4e00.
* Capitalize dedup strategy in radio buttons
* Fix variable editor name-input bug
You couldn't delete an invalid character after typing it into the name-input field.
While investigating the issue turned out to be bigger, as there was a problem with
valid characters too. (See test scenarios below)
The fix seems to be, to remove an unnecessary check in the `changeVariableName`
action. There is theoretically now the possibility, that the `changeVariableName`
action is called with the same name, as the variable is already, but practically
there seems no possibility, that this could happen. A test, which checks that, had
to be removed too.
Test scenarios:
* 1st Scenario
1. Type "@"
2. Try deleting it
* 2nd Scenario
1. Type "w"
2. delete "w"
3. Try typing "w" again
Fixes#26562
* Fix bug when updating existing variable
this is in order to trigger no data when used with alerting.
fixes#26897.
This is perhaps better solved in the SDK but that needs more thought and is tracked in grafana/grafana-plugin-sdk-go#214
* Fix lint error in types.ts
* Bump eslint and its deps to latest
* Add eslintignore and remove not needed eslintrcs
* Change webpack configs eslint config
* Update package.jsons and removed unused eslintrc files
* Chore yarn lint --fix 💅
* Add devenv to eslintignore
* Remove eslint disable comments for rules that are not used
* Remaining eslint fixes 💅
* Bump grafana/eslint-config 💥
* Modify package.json
No need for duplicate checks.
* Modify eslintignore to ignore data and dist folders
* Revert removing .eslintrc to make sure not to use certain packages
* Modify package.json to remove not needed command
* Use gitignore for ignoring paths
* Upgrade Go and Node versions in CI build image
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
* Upgrade Dockerfile to Go 1.14.7 and Node 12.18.3
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
* Upgrade Dockerfile.ubuntu to Go 1.14.7 and Node 12.18.3
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
* TextPanel: Fixes issue when interpolation of variables stops working
* Tests: fixes broken typing in test
* Tests: updates e2e dashboard to html so we get the raw strings
* Tests: reverted back to markdown and fixed a bug
## ButtonCascader
### added
- new prop `icon` with type `IconName`
### changed
- `icon` style is now `icons` with properties `left` and `right` for the respective icons
## ButtonCascader Story
### added
- new story `withIcon`
- new knob `icon`
### changed
- `icon` style is now `icons` with properties `left` and `right` for the respective icons
closes#23755
* Minor changes
* Only expect login “change password” notification for default passwords
* Optionally populate basic auth when adding a datasource
* Optionally match screenshot when adding a panel
* feat(grafana-toolkit): add a flag to the plugin:ci-package command
* docs(grafana-toolkit): add a short comment above the flag
* fix(grafana-toolkit): fix option for signing a plugin with the admin endpoint
* Create sorting button and functionality
* Set up logs ordering
* Add tests
* Refactor
* Refactor
* Replace new button with old
* Move SortOrder enum to grafana/data
* Update SortOrder in test
* Update context based on sort order of logs
* Update used method for panel, update tests
* Rename prop to logsSortOrder
* Memoize resuults
* Add title too button
* Add disablinng of button for 1sec
* Update wordiing
* Update packages/grafana-data/src/utils/logs.ts
Co-authored-by: Zoltán Bedi <zoltan.bedi@gmail.com>
* Update packages/grafana-data/src/utils/logs.ts
Co-authored-by: Zoltán Bedi <zoltan.bedi@gmail.com>
* Update test by reordering logs
* Clear timers, add button flipping title
Co-authored-by: Zoltán Bedi <zoltan.bedi@gmail.com>
* Squash four commits and claim.
Credit to @ikkemaniac in #25034, but taking this to sign CLA and get it landed. Four commit message were:
- add 'fill' switch on Alert Tab
- add 'fill' to Alert init model. Make default value 'true' not to break current design
- use newly created alert.fill when rendering graph
- add 'line' switch on Alert tab, add 'line' to Alert init model. Set default to 'true' not to break current design. Use newly created alert.line when rendering graph
Should close feature req #7258.
* Move alert toggle to Display tab.
* Move alertThreshold to PanelModel.options.
* Fix ThresholdMapper tests by adding options to each mocked panel.
* Update documentation for the new display option.
* Update docs with review feedback.
* Handle onRender with null panel in ThresholdMapper
* Run query on splitOpen action
* Escape \ in prometheusRegularEscape
* Revert "Run query on splitOpen action"
This reverts commit 3559b6c573.
Co-authored-by: Andrej Ocenas <mr.ocenas@gmail.com>
* Send current time range when fetching labels and values in Explore
* Pass range to Editors, in the same way as it was in Angular editors
* Remove unused imports
* Remove unused imports, props
* Update
* Update
* Update refresh condition
* Add comment
* StatPanel: Fix stat panel display name now showing when explicitly set
* StatPanel: Updarted auto mode to also take panel title into consideration
* fixed test
* Add stack trace to span detail row
* Modify accordian text not to have a whitespace
* Modify stackTrace to stackTraces
* Modify AccordianText ti get text component as prop
* Fix typecheck and test failure
* Span details text area do not wrap line
* Docs: how to replace home dashboard
* add overrides explanation
* change home dashboard v2
* Apply feedback for home dashboard doc
* home dashboard doc v3
* Apply feedback on home dashboard doc
* Return valid metadata even if data is empty
* Make sure fields is not accessed when there is no data
* Meta Info should depend only on meta data
* Refactor condition for better reading
* Change data to empty array for better condition handling
* Remove unecessary checks
* Add test for showing metaData even when data is empty
In OSS provisioning service init after plugin registration, but in
Enterprise it's the opposite order and installed app plugin check
fails. This adjusts service registry init priority to make sure plugins
are registered before provisioning inits.
Which issue(s) this PR fixes:
Fixes#26336
Before this, if the user were to divide by 0.0, "Infinity" would be returned in the result and the user would get an error: "unexpected type, expected json.Number but got string". Now these values are properly set as Inf values (and also made sure to handle NaN as well).
* test
* WIP: Create v2 version
* Update tests, remove conosole logs, refactor
* Remove incorrect types
* Update type
* Rename legacy and new metrics
* Update
* Run request when Raw Data tto Raw Document switch
* Fix size updating
* Remove _source field from table results as we are showing each source field as column
* Remove _source just for metrics, not logs
* Revert "Remove _source just for metrics, not logs"
This reverts commit 611b6922f7.
* Revert "Remove _source field from table results as we are showing each source field as column"
This reverts commit 31a9d5f81b.
* Add vis preference for logs
* Update visualisation to logs
* Revert "Revert "Remove _source just for metrics""
This reverts commit a102ab2894.
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
* DashboardLinks: WIP fix for dashboard links issue
* Make the dashboard links update on change(hacky)
* Replace dashboard links with new array when updating/adding dash links
* Update snaps
* Deep clone dashboard links on save
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
* add white background to tooltip component
* remove faulty background
* new theme for tooltip
* correct colors, remove custom box-shadow
* rename theme and add documentation
* use useStyles for style memo
This makes it so results are more stable between refreshes of data and fixes sorting issues with Azure Application Insights service as well as the two Azure Analytics services.
fixes#22937
Removes "Metrics"/"Logs" mode switcher from Explore, allowing for both
metrics and logs queries at the same time.
Co-authored-by: kay delaney <kay@grafana.com>
* In the parser when it was configurate more bucket it put the formula in name column
* Tests
* Tests
* Tests
* Tests
* Tests
* Tests
* Process/Tests - backend (Go)
* Update pkg/tsdb/elasticsearch/response_parser.go
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
* reverse
* Update pkg/tsdb/elasticsearch/response_parser.go
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
* Datasource/CloudWatch: More robust handling of different query modes
A small refactor which changes how the CloudWatch datasource handles
multiple queries with different query modes. Groundwork for future
Logs/Metrics unification work.
* BackendSrv: Observable all the way POC
* starting to unify code paths
* tests pass
* Unified error handling
* Single request path and error handling
* Fixed ts issue
* another ts issu
* Added back old requestId cancellation
* Slow progress trying to grasp the full picture of cancellation
* Updates
* refactoring
* Remove a bunch of stuff from backendSrv
* Removed another function
* Do not show error alerts for data queries
* Muu
* Updated comment
* DataSourceWithBackend: Switch to new Observable fetch api
* fixed ts issue
* unify request options type
* Made query inspector subscribe to backendSrv stream instead of legacy app events
* Add back support for err.isHandled to limit scope
* never show success alerts
* Updated tests
* use ovservable in test
* remove processResponse
* remove processResponse
* trying to get tests to pass :(
* no need for the extra tests
* Fixed processsing
* Fixed tests
* Updated tests to mock fetch call
* lint fixes
Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
Can be hard for users to understand what user is configured
when encrypting the username field why this reverts to
store the username in cleartext.
Also, we don't encrypt username for data sources.
Ref #25967
* Fixed so the merge for table values works as it did before.
* wip
* fixed tests.
* merge tests are green.
* removed unused code and simplify the seriesToRows.
* added time series to rows editor.
* using getFrameDisplayName for the metric value.
* updated description of transforms.
* updated docs.
* fixed according to feedback.
* changed from images to markdown tables for the examples.
* forgot to save :P
Support storing sensitive notification settings securely/encrypted.
Move slack notifier url and api token to secure settings.
Migrating slack notifier to store token and url encrypted is currently
a manual process by saving an existing slack alert notification channel.
saving an existing slack alert notification channel will reset the stored
non-secure url and token.
Closes#25113
Ref #25967
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
* BackendSrv: Observable all the way POC
* starting to unify code paths
* tests pass
* Unified error handling
* Single request path and error handling
* Fixed ts issue
* another ts issu
* Added back old requestId cancellation
* Slow progress trying to grasp the full picture of cancellation
* Updates
* refactoring
* Remove a bunch of stuff from backendSrv
* Removed another function
* Do not show error alerts for data queries
* Muu
* Updated comment
* fixed ts issue
* unify request options type
* Made query inspector subscribe to backendSrv stream instead of legacy app events
* Add back support for err.isHandled to limit scope
* never show success alerts
* Updated tests
* Fixing tests
* Minor weak
* Improved logic for the showErrorAlert and showSuccessAlert boolean flags, now they work more logically
* Fix issue
* Fix list of sample providers
The sample providers on this page has changed, so the list at the top of the page is no longer correct. Also link to Octo and Azure AD pages from here, since they are also OAuth2 providers.
* Fix misspelled Okta
* Make bullet list of OAuth2 providers
* Sort list of OAuth2 providers alphabetically
The external image storage for GCS creates the JWT Token from a credentials file,
but if your Grafana server runs under a GCE instance with a service account on it,
you can use that instead (you don't have to manage/secure the credentials file).
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
Co-authored-by: Emil Tullstedt <emil.tullstedt@grafana.com>
Macaron context.QueryBool() seems to modify the request context
that causes the POST and PUT requests to fail with:
"http: proxy error: net/http: HTTP/1.x transport connection broken: http: ContentLength=333 with Body length 0"
- more and more datasources are having long-running queries,
automatically triggering is becoming more of a burden than a help.
- some datasource queries might actually cost money, so running queries
should be explicit.
... it's logically better, but the real reason is to appease Cypress which was cause a consistent request error for a single plugin (datadog-datasource). An error which could not be reproduced manually.
* FieldConfig: Remove field label for single item categories
* Update public/app/features/dashboard/components/PanelEditor/FieldConfigEditor.tsx
Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
* Loki: Add Legend field to query editor
* Loki: Basic test for legend field
* Loki: Mention legend is only for metric queries
* Loki: Fix absolute timerange never updating
* Add whats new draft article
* Update docs/sources/guides/whats-new-in-v7-1.md
Co-authored-by: Sofia Papagiannaki <papagian@users.noreply.github.com>
* Add elastic internal links
* Docs: more about vault in whats new
* docs: monthly reports
* Apply suggestions from code review
Co-authored-by: Sofia Papagiannaki <papagian@users.noreply.github.com>
* Remove unified explore mention
* updated what's new
* Update link
* Add search image link
* Add 7.1 article to the menu
* Fix typo
Co-authored-by: Sofia Papagiannaki <papagian@users.noreply.github.com>
Co-authored-by: Leonard Gram <leo@xlson.com>
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
* graph with new controls
* graph with new controls
* Fix categories
* fix test imports
* Chore: Fix spelling (#25905)
* grafana-ui: Make output chunks correct (#25922)
* Explore/Loki: Show results of instant queries only in table and time series only in graph (#25845)
* Show results of instant queries only in table and rest in graph
* Add type to QueryResultMeta
* Update log row hover background only if context is not open
* Revert "Update log row hover background only if context is not open"
This reverts commit 144197c954.
* Explore/Loki: Fix field type in table for instant queries (#25907)
* Update field type for instant queries to number
* Remove fieldtype as in prometheus
* Revert "Remove fieldtype as in prometheus"
This reverts commit f887ad1125.
* Chore: Disable scopelint for tests (#25923)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
* grafana/ui: Fix storybook dev (#25928)
* Minimize css and js only for storybook build
* Update CodeEditor story, make it internal
* Update storybook webpack config
* TimeZonePicker: added possibility to toggle if internal time zones should be included or not. (#25934)
* made some small adjustments after feedback.
* made the flag optional.
* Docker: Upgrade to base on Alpine 3.12 (#25936)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
* DataLinks: Add internal links in table and allow custom query (#25613)
* Add internal links in table and with custom query
* Add specific types for internal and external link
* Change the datalink types to be more backward compatible
* Refactor the link utils for explore
* Add internal linking to table panels
* Fix derived field condition
* Prettify
* Add and fix tests
* Prettify
* Fix imports and tests
* Remove unused type
* Update packages/grafana-data/src/types/explore.ts
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
* Update packages/grafana-data/src/types/explore.ts
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
* CircleCI: Upgrade grabpl (#25939)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
* Provisioning: Use folders structure from the file system to create desired folders in dashboard provisioning. (#23117)
Fixes#12016
* Added options to customize chart data listening (#25918)
* Explore: Remove legend formatting when switching from panel to Explore (#25848)
* Remove legend formatting when switching from panel to explore
* Add test coverage
* Query history: Add search for query history and starred queries (#25747)
* Add searching functionality to Queries tab
* Implement search for starred queries
* Update tests and add test coverage for searching
* Changes based on provided feedback
* Remove redundant storing of results
* Update naming of onSearchFilterChange function in tests
* Update filterQueriesBySearchFilter function
* Update filterQueriesBySearchFilter function
* Debounce search
* Remove console.log()
* Use useDebouncedCallback
* Update tests, remove redundant props
* When in starred, search only in starred
* Add timefilter as dependency
* Remove redundant dependency, refactor
* Grafana-UI: Add FileUpload (#25835)
* Grafana UI: Setup component
* Grafana UI: DashboardFileUpload => FileUpload
* Grafana UI: Expand docs
* Grafana UI: Add className
* Grafana UI: Update import
* Grafana UI: Clarify props
* Update packages/grafana-ui/src/components/FileUpload/FileUpload.tsx
Co-authored-by: Tobias Skarhed <1438972+tskarhed@users.noreply.github.com>
* Grafana UI: Style icon
* Grafana UI: Show uploaded file name
* Grafana UI: Add tests
* Grafana UI: Add useStyles + useCallback
* Grafana UI: Remove stylesFactory
* Grafana UI: Revert to useTheme
Co-authored-by: Tobias Skarhed <1438972+tskarhed@users.noreply.github.com>
* Fix: Value mappings match against string values (#25929)
* Use standard input for value mappings value
* add test and case for matching string values
* re add number on rangemap
* remove FieldTypeNumber required
* Docs: Changelog update 7.05 & latest.json update (#25941)
* Docs: Changelog update for 7.0.5
* Update latest.json
* Fixed alignment
* Stackdriver: Rename Stackdriver to Google Cloud Monitoring (#25807)
* Update backend
* Update frontend
* Keep old plugin id
* Update docs
* Place doc images to a new directory
* Legacy support for stackdriver-auto alignment
* Consistent plugin name
* Apply suggestions from code review
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
Co-authored-by: Tobias Skarhed <1438972+tskarhed@users.noreply.github.com>
* Update docs
* Update public/app/plugins/datasource/cloud-monitoring/README.md
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
* Add reference to the data source formerly being named Stackdriver
* Update pkg/models/datasource.go
Co-authored-by: Carl Bergquist <carl@grafana.com>
* Fix gofmt
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
Co-authored-by: Tobias Skarhed <1438972+tskarhed@users.noreply.github.com>
Co-authored-by: Carl Bergquist <carl@grafana.com>
* Fix strict null errors that resulted from search (#25950)
* Arrow: when exporting arrow use the calculated names (#25871)
* PanelHeader: Fixed loading icon position (#25949)
* PanelHeader: Fixed loading icon position
* revert back to text weak color
* Azure/Log Analytics: return more error information (#25937)
When there is an error message in the HTTP response, this copies that error so it is relayed to the user by being shown in the frontend.
This also makes it so when there is an error the interpolated query string (ExecutedQueryString) is returned so users can see it in the query inspector.
* Azure: Multiple dimension support for Azure Monitor Service (#25947)
Azure Monitor (metrics) support multiple dimensions instead of just one.
Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
* Docs: Update alert-list-panel.md (#25779)
Fixed minor typo and format updates
* Docs: Update add-a-panel.md (#25780)
* Linting fixes for the provisioning package (#25690)
* Chore: whatwg-fetch version bump (#25952)
* Use latest fetch polyfill/shim
* Updated lockfile
* Monaco: option to hide line numbers (#25920)
* Docs: Reorganize reference topics (#25915)
* moved annotations.md
* Update annotations.md
* moved dashboard_folders.md
* moved dashboard_history.md
* moved playlist.md
* moved search.md
* migrations test
* docs: spelling (#24383)
* Docs: spelling
* Docs: spelling (contribute/ directory)
* Drop whats-new-in changes
* migrations test
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
Co-authored-by: Richard Hartmann <RichiH@users.noreply.github.com>
Co-authored-by: Ivana Huckova <30407135+ivanahuckova@users.noreply.github.com>
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
Co-authored-by: Marcus Andersson <marcus.andersson@grafana.com>
Co-authored-by: Andrej Ocenas <mr.ocenas@gmail.com>
Co-authored-by: Maksim Nabokikh <32434187+nabokihms@users.noreply.github.com>
Co-authored-by: Steven Vachon <contact@svachon.com>
Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
Co-authored-by: Tobias Skarhed <1438972+tskarhed@users.noreply.github.com>
Co-authored-by: Peter Holmberg <peterholmberg@users.noreply.github.com>
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
Co-authored-by: Sofia Papagiannaki <papagian@users.noreply.github.com>
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
Co-authored-by: Carl Bergquist <carl@grafana.com>
Co-authored-by: Kyle Brandt <kyle@grafana.com>
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
Co-authored-by: Josh Soref <jsoref@users.noreply.github.com>
* now with suggestions
* using suggestions API
* using variable suggestions
* using variable suggestions
* show variables
* minor cleanup
* add @alpha warning
* Do not produce data variables if panel does not support queries
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
* Add stackdriver deep link
* No deep link for SLO queries
* Add tests
* Update docs/sources/features/datasources/stackdriver.md
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
* Enforce resource type
* Navigate to google account chooser first
* Change renamed image reference
Fix misspelling in image name and change it to conform with the rest cloud monitoring images
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
When there is an error message in the HTTP response, this copies that error so it is relayed to the user by being shown in the frontend.
This also makes it so when there is an error the interpolated query string (ExecutedQueryString) is returned so users can see it in the query inspector.
* Update backend
* Update frontend
* Keep old plugin id
* Update docs
* Place doc images to a new directory
* Legacy support for stackdriver-auto alignment
* Consistent plugin name
* Apply suggestions from code review
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
Co-authored-by: Tobias Skarhed <1438972+tskarhed@users.noreply.github.com>
* Update docs
* Update public/app/plugins/datasource/cloud-monitoring/README.md
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
* Add reference to the data source formerly being named Stackdriver
* Update pkg/models/datasource.go
Co-authored-by: Carl Bergquist <carl@grafana.com>
* Fix gofmt
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
Co-authored-by: Tobias Skarhed <1438972+tskarhed@users.noreply.github.com>
Co-authored-by: Carl Bergquist <carl@grafana.com>
* Use standard input for value mappings value
* add test and case for matching string values
* re add number on rangemap
* remove FieldTypeNumber required
* Add searching functionality to Queries tab
* Implement search for starred queries
* Update tests and add test coverage for searching
* Changes based on provided feedback
* Remove redundant storing of results
* Update naming of onSearchFilterChange function in tests
* Update filterQueriesBySearchFilter function
* Update filterQueriesBySearchFilter function
* Debounce search
* Remove console.log()
* Use useDebouncedCallback
* Update tests, remove redundant props
* When in starred, search only in starred
* Add timefilter as dependency
* Remove redundant dependency, refactor
* Add internal links in table and with custom query
* Add specific types for internal and external link
* Change the datalink types to be more backward compatible
* Refactor the link utils for explore
* Add internal linking to table panels
* Fix derived field condition
* Prettify
* Add and fix tests
* Prettify
* Fix imports and tests
* Remove unused type
* Update packages/grafana-data/src/types/explore.ts
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
* Update packages/grafana-data/src/types/explore.ts
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
* Update field type for instant queries to number
* Remove fieldtype as in prometheus
* Revert "Remove fieldtype as in prometheus"
This reverts commit f887ad1125.
* Show results of instant queries only in table and rest in graph
* Add type to QueryResultMeta
* Update log row hover background only if context is not open
* Revert "Update log row hover background only if context is not open"
This reverts commit 144197c954.
* Set time range when creating a dashboard
* Optionally set time range when opening a dashboard
* Default time range to 6 hours instead of 1 hour
* Minor changes
- The Application Insights Service now returns a dataframe. This is a "wide" formatted dataframe with a single time index.
- Multiple "group by" dimensions may now be selected instead of just one with Application Insights.
- Some types are copied / slightly altered from the Azure Go SDK but that SDK is not imported at this time.
Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
For backend data sources executing in the backend (not through data proxy) make
sure that the timeout applies to cached HTTP client.
Fixes#25863
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
* creating page
* add types select
* adding switches
* start with converting angular templates to json
* converting more alert channels to new format
* convert remaining channels
* typing the form
* add validation, update models
* fix default value in type select
* fix type
* fix issue with validation rule
* add missing settings
* fix type errors
* test notification
* add comments to structs
* fix selectable value and minor things on each channel
* More typings
* fix strictnull
* rename ModelValue -> PropertyName
* rename show -> showWhen
* add enums and adding comments
* fix comment
* break out channel options to component
* use try catch
* adding default case to OptionElement if element not supported
* Add TableDataOptions component
* A bit along the way
* Make transforms work
* Make it work
* Add collapsed text
* Fix transformations and overflow for QueryOperationRow
* Fix layout
* Minor fixes
* Fix feedback
* Remove unused imports
* Remove unused Container
* Horizontal layout for Switches
* Fix Swicth bug
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
For backend data sources executing in the backend (not through data proxy) make
sure that the timeout applies to cached HTTP client.
Fixes#25863
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
* Set time range when opening a dashboard
* Set UTC timezone when creating a dashboard
* Added flow for selecting options in custom select fields
* Fix flaky test
* draft on a unified TimeZonePicker.
* most of the data structures is in place.
* wip.
* wip.
* wip: timezone selector in progress.2
* fixed so we have proper data on all timezones.
* started to add timezone into time picker.
* addeing time zone footer.
* footer is working.
* fixed so we use the timeZone picker in shared preferences.
* Added so we can change timeZone from picker.
* did some styling changes.
* will update timezone on all places that we need to update it.
* removed console.log
* removed magic string.
* fixed border on calendar.
* ignoring eslint cache.
* cleaned up the code a bit.
* made the default selectable.
* corrected so the behaviour about default works as expected.
* excluded timezone from change tracker.
* revert so default will always be the intial value.
* default will always fallback to the one in the config.
* do the country mapping on startup.
* fixed nit.
* updated snapshots for timepicker.
* fixed build errors.
* updating so snapshot tests is in sync.
* removed Date.now from prop since it will change each run in the snapshot tests.
* fixed so e2e tests works as before.
* moved files into separate folders.
Azure Application Insights Analytics is no longer accessed by the edit button from within the Application Insights service. Instead, there is now an Insights Analytics option in the Service drop down.
Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
* Templating: Moves global variables from TemplateSrv to Redux
* Refactor: renamed to meta
* Tests: fixed broken tests
* Chore: reduces strict null errors
* renamed meta variabel to system variable.
Co-authored-by: Marcus Andersson <marcus.andersson@grafana.com>
* onChangeTab for active tab and pointer mouse
* Add anchor element to tab
* Make a strict 'anchor' mode
* Add short docs
* Apply suggestions from code review
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
* Fix nits
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
* Minor changes
* Fixed data source selection issue
… where it appeared as though the wrong one was selected
* Fixed “executing a canceled action” issue
... thrown from RxJS
* Chore: changes null values to undefined in explore reducer
* Chore: changes sortLogsResult param type from null to undefined
* Chore: changes null values to undefined in explore reducer
* Chore: updates strict null errors count
* Revert "Chore: changes null values to undefined in explore reducer"
This reverts commit b82d841611.
* Revert "Chore: changes sortLogsResult param type from null to undefined"
This reverts commit 21073b5d30.
* Revert "Chore: changes null values to undefined in explore reducer"
This reverts commit 798559688c.
* Chore: updates ExploreItemState type
* Chore: updates initial ExploreItemState in Explore reducer
* Chore: updates strict null errors count to 699
* Chore: changed ExploreMode and Emitter type in ExploreStateItem
* Revert "Chore: changed ExploreMode and Emitter type in ExploreStateItem"
This reverts commit 7e0e2027fc.
* Settings: Add setting for hiding version number for anonymous users
Fixes#12925
* Hide version string from footer when unavailable
* Settings: Test frontend settings with hide version for anonymous users
* Settings: Add hide version variable to frontend settings
* Make AnonymousHideVersion non-global
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
* Settings: Improve test neighbor friendliness, reset state before and after
* Settings: Use T.Cleanup
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* Forbid additional redirect urls
* Optionally force login in anonymous mode
* Update LoginCtrl page to ignore redirect parameter
* Modify SignIn to set forceLogin query instead of redirect
* Pass appUrl to frontend and use URL API for updating url query
* Apply suggestions from code review
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* Fix SignIn test
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* added script to check docs metrics.
* added information link on how to add code comments.
* added script for build and measure code comment metrics.
* fixed issues according to shellcheck.
* Added so we build the metrics if report folder is missing.
* added some spacing and a devider.
* Added so we can send metrics to grafana.
* added shellcheck attribute.
* Fixed spelling according to feedback.
* see if shellcheck passes.
* fixed issue with shellcheck.
* Explore/Logs: Fix tooltip display for log graph (#25544)
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
Co-authored-by: kay delaney <45561153+kaydelaney@users.noreply.github.com>
* Add Root URL info under License file management
Edited through GitHub, not tested on development web server.
* Update docs/sources/enterprise/_index.md
Make updating root_url instructions more straightforward, with action first and explanation second.
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
* Update docs/sources/enterprise/_index.md
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
* Update docs/sources/enterprise/_index.md
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
* wip: added draft of series to rows.
* wip: building dataFrame structure first and then adding data.
* wip: added some refactorings of the seriesToRows transformer.
* did some refactorings to make the code easier to follow.
* added an editor for the transform.
* renamed some of the test data.
* added docs.
* fixed according to feedback.
* renamved files.
* fixed docs according to feedback.
* fixed so we don't keep labels or config values from.
* removed unused field.
* fixed spelling errors.
* fixed docs according to feedback.
* Minor changes
* Use UI for removing dashboards and datasources
… with an optional “quick” mode that instead does so via a request
* Improved URL helpers
* Simplified test teardown
* Added support for multiple tests
... instead of being forced to cram everything into a single test because the session was cleared
This ensures that the X-Grafana-User header can be trusted.
If the configuration enabled the setting of this header, the
server can now trust that X-Grafana-User is set/unset by Grafana.
Before this, an anonymous user could simply set the X-Grafana-User
header themselves (using the developer tool for example)
Refactor to allow shared contract between core and external backend plugins
allowing core backend data sources in Grafana to be implemented in same
way as an external backend plugin.
Use v0.67.0 of sdk.
Add tests for verifying plugin is restarted when process is killed.
Enable strict linting for backendplugin packages
The existing link for developing plugins was redirecting to the legacy plugin docs page for developers. I updated it to the new link for latest post-7.0 release. 👍
* Update Bitcoin Currency to use proper symbol, add mBTC and μBTC
* Apply suggestions from code review
Co-authored-by: Marcus Andersson <systemvetaren@gmail.com>
* Revert Bitcoin to use '฿'
Co-authored-by: Marcus Andersson <systemvetaren@gmail.com>
* add flux
* add token to datasource config editor
* add backend for flux
* make the interpolated query available in query inspector
* go mod tidy
* Chore: fixes a couple of strict null errors in influxdb plugin
Co-authored-by: kyle <kyle@grafana.com>
Co-authored-by: Lukas Siatka <lukasz.siatka@grafana.com>
* Fix dense y-axis labels in heatmap using tsbuckets
This change emulates the non-tsbuckets Y-axis tick count by making
the y-axis label formatter treat a dense set as a sparse set.
fixes#11342
* have d3 do the work
* Update public/app/plugins/panel/heatmap/rendering.ts
Co-authored-by: Alexander Zobnin <alexanderzobnin@gmail.com>
Co-authored-by: Alexander Zobnin <alexanderzobnin@gmail.com>
* Table: Adds adhoc filtering
* Refactor: changes after PR comments
* Refactor: hides filtering for data sources that do not support modifyQuery in Explore
* Refactor: fixes strict null error
* Changed tooltip position to above icon
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
Be more explicit about the fact that providing images in alert notifications requires an external image storage provider. Previously this read as if it was only necessary for publicly accessible images, but even if they are served from Grafana, the administrator must set up the "local" image provider in the configuration.
* Minor changes
* Remove console.* logger plugin
... as it doesn't work in Electron
* Only open/close panel editor options and groups when state is inverted
... meaning, only open when closed and only close when open. This avoids unpredictable states, causing inconsistent results.
* Support for adding multiple datasources and dashboards
... and having them all auto-removed when tests are completed
* Avoid page errors when removing dashboards and datasources [keep?]
* Wait for chart data before saving panel
... so that everything is ready when returning to the dashboard
* Add Jeroen Op 't Eynde to the Grafana team
Jeroen Op 't Eynde has been proposed as a new team member and the vote achieved the super majority required.
* Governance - sort alphabetically
* Add Malcolm Holmes to the Grafana team
Malcolm Holmes has been proposed as a new team member and the vote achieved the super majority required.
* Governance - sort names alphabetically
* Add Chris Trott to the Grafana team
Chris Trott has been proposed as a new team member and the vote achieved the super majority required.
* Governance - should be alphabetical
* Chore: adds query keys and refId reassignment on query row removal
* Chore: updates explore reducer tests to cover query row adding, removal, refId and key reassignment
* Chore: changes refId value in explore reducer from undefined to string to avoid introducing new strict null errors
* Chore: fixes a small nitpick with array spread in Explore reducer
* Chore: removes unnecessary dispatches in query row tests in Explore reducer test
* Refactor: initial commit
* Tests: updates tests
* Tests: updates snapshots
* Chore: updates after PR comments
* Chore: renamed initVariablesBatch
* Tests: adds transactionReducer tests
* Chore: updates after PR comments
* Refactor: renames cancelAllDataSourceRequests
* Refactor: reduces cancellation complexity
* Tests: adds tests for cancelAllInFlightRequests
* Tests: adds initVariablesTransaction tests
* Tests: adds tests for cleanUpVariables and cancelVariables
* Always cleanup dashboard on unmount, even if init is in progress. Check if init phase has changed after services init is completed
* fixed failing tests and added some more to test new scenario.
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
Co-authored-by: Marcus Andersson <marcus.andersson@grafana.com>
* uses plugin-sdk-go v0.66.0, which adds adds the ExecutedQueryString property to FrameMeta and changes s/Title/DisplayName in FieldConfig
* go mod tidy
* Updated templating code to support the $__user variable to expose the current
userid, username, email and login.
Fixed the $__org variable as it was returning the user id instead of the ordId.
Updated the documentation to match
* Updated solution to retrieving $__user variables to pull directly from user record (thereby allowing future access to properties that
might not exist in the contextSvr).
Replicated this initialisation in the variables feature
Corrected typo's in documentation.
* Repaired typecheck issues.
* Updated patch to pull entirely from contextSrv without API calls.
* ... And removed the redundant comments.
* Updated documentation.
note: This is just Azure Monitor within the Azure Monitor datasource (not insights, insights analytics, or log analytics yet).
Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
* added tests to verify flow.
* refactoring picker reducer.
* made all the tests green.
* removed console.log's
* fixed toggle all and making sure the correct values are set on picker open.
* added more tets.
* refactored and added table tests.
* fixed so we select values from selectedValues instead of options.
* fixed so you can navigate and select even after you have filtered a variable.
* adding tests to verify flows when toggling by highlight.
* fixed so enter always selects value before closing.
* improved the code for tags.
* Cleanup
* addPanel now supports (optional) custom dashboardUid
* addPanel now supports (optional) visualization name
* Added CLI option for updating screenshot fixtures
* Added support for console.* functions within tests
* Refactored screenshot command for greater simplicity
* addPanel now sets a unique title
* Updated lockfile
* Fix Loki and Prometheus query fields on mobile devices
* Add min widt to Elasticsearch Query Field
* Remove width for Elastic, works nicely without updating it
* Update public/app/plugins/datasource/loki/components/LokiQueryFieldForm.tsx
Co-authored-by: Zoltán Bedi <zoltan.bedi@gmail.com>
Co-authored-by: Zoltán Bedi <zoltan.bedi@gmail.com>
* Logs: Use result range instead of timepicker range for log histogram
If a logs datasource does not send histogram data for the requested
time range, the logs model computes a timeseries based on the log row
counts, bucketed by an automcatically calculated time interval. Even
when this histogram time series did not span the whole requested time
range it was still rendered in the graph across the whole range, leaving
an empty area at its start. Users find this confusing and are lead to
believe their log data is missing.
This change fixes this by anchoring the start of the timeseries on the
first log row's timestamp from the result, and adds this smaller range
as `visibleRange` to the logs model and passes it through to the logs
component that optionally takes it into account to not render the empty
area.
The interval (bucket size) is also adjusted to account for a potentially
finer resolution on the shorter visible time interval.
The bucketsize multiplier was also changed from 10 to 20 to account for
the space between the chart's bars.
* Aligned visible range with buckets
* Extract bucket size calculation and add test
Fixes so that ini-sections containing hyphen is replaced with
underscore. Fixes an issue with backend plugin settings.
Ref grafana/grafana-image-renderer#147
* Chore: updates Explore result processor to sort dataframes based on their refId so results are displayed in a correct order
* Chore: adds types to Explore ResultProcessor getTableResult DataFrames
* Fix close milestone to remove label from all the required pull requests
There used to be a limit to 100 pull requests.
* Add dry run option in close-milestone task
* scripts/build/ci-build: Fix Makefile
* scripts/build/ci-build: Base Docker image on Debian Stretch
* scripts/build/ci-build: Modify Dockerfile for fewer RUN directives
* add some padding to accommodate for vertical scrollbar
* use theme spacing
* Move padding to inner div and make it use actual scrollbar width
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
* Chore: updates add label to query method in prometheus datasource to fix loki label insert
* Chore: adds addLabelToQuery test covering differences between adding label to loki vs non-loki queries
* Chore: adds an additional comment to addLabelToQuery
* Chore: renames isLokiDatasource to hasNoMetrics in addLabelToQuery
* Chore: refactors LogRowContextProvider to get rid of unnecessary array dimensions
* Chore: removes unnecessary array dimensions from LogRowContextProvider test
* Chore: changes LogRowContextProvider test to use jest mock
* Chore: updates LogRowContextProvider test
* Chore: removes unnecessary wrapper variable in LogRowContextProvider test
* First pass solution
* Refactor solution
* Add test coverage, update tests
* Fix behaviour for multiple labels, add test for this
* Add recordin rules to devenv prometheus
* Update devenv/prometheus2 instead of devenv/prometheus
* Add newlines
* Fix label matching if labels include comma, add test coverage
* Refactor
* Refactor, simplify
* Various fixes and requests for toolkit:
1) Added toolkit to the alpine docker image, so we can get latest fixes without having to re-release
2) Removed cp from e2d docker image
3) Change github client to allow to specify an owner so it's not "grafana" only
4) Toolkit refers to grafana-ui and grafana-data "next", rather than canary
* added toolkit to e2e docker image
* Added tools to the e2e image for building/deploying oracle
* added shasum
* removing toolkit from images
* Shorten filter history label
* Add keyboard shortcuts for update comment in Query history
* Add test coverage for new keyboard shortcuts
* Update changed aria-label in tests
* Add test scenario for enter and ctr key
* Resolve Cypress bin path
... instead of expecting it to be in a place that it may not be, depending on de-duping/flattening of nested dependencies
* Remove dashboard before removing datasource
... it makes more sense and it fixes random issues, perhaps something to do with how the backend is implemented.
* Updated lockfile
* Chore: adds event listeners allowing to exit log row context with ESC key
* Chore: updates LogRows styles to prevent it from rendering context provider inappropriately
* Revert "Chore: updates LogRows styles to prevent it from rendering context provider inappropriately"
This reverts commit 59b06424c4.
First example of the use of a variable in influxdb query should not use a regex query but a simple one. A first time influxdb user (like me) could think that the proper way to use variable in a dashboard template is to use regex query, but it's not true. Also "=~ /$region/" may be erroniously thought identical to "= '$region'" while instead "=~ /^$region$/" is identical to "= '$region'", and for that type of query is useless (if not slower) use a regex query.
* Alerting: Adds support for multiple URLs in Alertmanager notifier
Adds support for multiple URLs in Alertmanager notifier following
alertmanager documentation for high availability setup.
Update the documentation for alertmanager notifier.
Closes#24195
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
Co-authored-by: bergquist <carl.bergquist@gmail.com>
* Correction in abbreviation
* Minor correction in abbreviation
* Correcting abbreviation
* Correction in abbreviation
* Correcting abbreviation
* Correction in abbreviation
* Correction in abbreviation
* Correction in abbreviation
* Correction in abbreviation
* Correction in abbreviation
* Correction in abbreviation
* Correction in abbreviation
* Correction in abbreviation
* Correction in abbreviation
* Correction in abbreviation
* Update stack_guide_graphite.md
* Update whats-new-in-v4-6.md
* Correction in abbreviation
* Correction in abbreviation
* Correction in abbreviation
* Correction in abbreviation
* Correction in abbreviation
* Correction in abbreviation
* Correction in abbreviation
* Correction in abbreviation
* Update ldap.md
* Correction in abbreviation
* Correction in abbreviation
* Correction in abbreviation
* Correction in abbreviation
* Correction in abbreviation
* Update docs/sources/guides/whats-new-in-v5.md
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
* fixes so we match the transformer based on name properly.
* changed the signature on the FieldMatcher.
* introduced a names option so you can filter in name specificly.
* changed so the matcher UI uses the new options format.
* moved the exported functions together.
* changing editors a bit.
* made the filter by name work with both regex and name filtering.
* fixed failing tests and make sure we always parse regex the same way.
* removed unused code.
* simplified to make the existing field overrides still working.
* fixed issue reported by hugo.
* added tests for the name matcher.
* added tests for filter by name.
* added more tests.
* generated new version of the packages docs.
* fixed spelling error.
* regenerated the docs.
* fixes so we match the transformer based on name properly.
* changed the signature on the FieldMatcher.
* introduced a names option so you can filter in name specificly.
* changed so the matcher UI uses the new options format.
* moved the exported functions together.
* changing editors a bit.
* made the filter by name work with both regex and name filtering.
* fixed failing tests and make sure we always parse regex the same way.
* removed unused code.
* simplified to make the existing field overrides still working.
* fixed issue reported by hugo.
* added tests for the name matcher.
* added tests for filter by name.
* added more tests.
* updated menu and added alerts-overview.md
* Delete metrics.md
* Update menu.yaml
* changed file name and updated menu
* Update create-alerts.md
* added file and link
* Create view-alerts.md
* added content and links
* Update pause-an-alert.md
* added content and links
* edited notification content
* updated link
* Update docs/sources/alerting/create-alerts.md
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
* Applied marcus e. edits
* Update docs/sources/alerting/alerts-overview.md
Co-authored-by: Carl Bergquist <carl@grafana.com>
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
Co-authored-by: Carl Bergquist <carl@grafana.com>
* Chore: updates getMessageFromError return type
* Chore: updates the position of incorrectly placed bang operator
* Chore: updates typing on dropdown typeahead directive
* Chore: updates QueryOperationAction props to require title
* Revert "Chore: updates QueryOperationAction props to require title"
- log stats for Loki are per query
- this change tracks the query stats by refId, preventing the summing of
the same stats across multiple series of the same response.
* Add "When to use" info to Checkbox.mdx
Added info about how checkboxes generally work and when to use another component instead.
* Replaced words with proper component names
* Update Checkbox.mdx
Elaborate on explanations. Add examples for how to use checkboxes the user-friendliest way.
* Apply suggestions from code review
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
Co-authored-by: Tobias Skarhed <tobias.skarhed@gmail.com>
Co-authored-by: Tobias Skarhed <1438972+tskarhed@users.noreply.github.com>
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
* Editor: New line on Enter, run query on Shift+Enter
- default Enter behavior on query editor fields should be a new line
- special behavior should require a special key: running a query is now
done on Shift-Enter
- Plugins order had to be changed because when typeahead is shown, Enter
is accepting the suggestion
* Run with ctrl-enter, hint in query placeholder
* Fix Kusto field behavior for Enter
* Fix Kusto field behavior for default suggestion
* Add info: when to use which and how to mix buttons
* Update description for Button.mdx
- add note about scenario without primary action
- add note about secondary button being the default
* Refine docs info for secondary and destructive
Co-authored-by: Tobias Skarhed <tobias.skarhed@gmail.com>
* Add "When to use" info to RadioButtonGroup.mdx
* Clarify more clearly when to use 'Select' instead
* Update RadioButtonGroup.mdx
Add line explaining why we want select for more than four options instead of a radio button group
* Update RadioButtonGroup.mdx
remove part about when elements are triggering changes.
Co-authored-by: Tobias Skarhed <tobias.skarhed@gmail.com>
* image and card component
* change height of getting started panel
* progress
* setup basic step
* advanced steps
* step forward and backward
* do checks
* fix button size
* minor styling on butttons
* add correct links
* save tutorial click in localstorage
* types and gradients
* fix gradients
* use spacing variable
* lots of responsiveness
* add links to help
* Getting started work
* redo according to split panel design
* minor touch ups
* new background images
* split up docs card to different hrefs
* welcome bar touch ups
* hide icon on small screens
* transparent false on welcome banner
* fix urls
* source tag in welcome urls
* move images to panel dir, removed unused images
* Nicer loading message
* make the cards look nicer on wide screens
* append utm tag on render instead
* replace width with margin
* new background image for light
* remove target on a element
* removing buttonselect, add tag to href
* more polishing
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
* Field: Change getFieldTitle to getFieldDisplayNamne and change the NAME of the title field config from Title to Display name
* Review feedback
* fixed unit tests
* Rename fieldConfig.title to displayName
* Fixed tests
* Added migration
* Renamed getFrameDisplayTitle to getFrameDisplayName
* azuremonitor: add gzipped and base64 encoded query to metadata
for Azure Log Analytic query responses
* azure monitor: add fields to metadata for log analytics
* azuremonitor: correction to text in query editor
* azuremonitor: adds subscription id to result metadata
* azuremonitor: build deep link url for Log Analytics
Most of the information needed for building the url
comes from the backend. The workspace friendly name
and the resource group that the workspace belongs
to are fetched in a separate API call. This call is
cached otherwise there would be a workspaces call
per query on the dashboard.
* docs: azure log analytics deep linking
* Apply suggestions from code review
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
* docs: fixing review comments for azure monitor
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
* QueryField: No default suggestion selected
It's been a long-standing issue that careless typing lead to unwanted
tab completion insertions. With this change the completion item list no
longer selects the first item by default. The user has to actively click
ArrowDown to select the first one.
* Added type export
* Remove width limit of typeahead list
* Datasource/CloudWatch: Fix encoding of CloudWatch Logs deep link URL
* Adds data links to cloudwatch logs responses for deep linking to aws console
* Implements PR feedback
While query fields should not rely on getting unmounted when the data source changes (and instead react to that change in e.g. componentDidUpdate()), query fields other than PromQueryField still rely on this.
* Justify to alignment in stat
* No stats label in inspect
* Use sentence case in panel names
* typos
* typo
* Typo
* Query -> query options
* prettier
* Transformer -> transform data
* Do not show deprecated plugins in the viz picker
* Update viz picker layout
* Chore: adds timeEpochNs to LogRowModel in @grafana/data
* Chore: updates explore utils ResultProcessor getLogsResult and explore utils tests
* Chore: updates core/logs_model to include nanoseconds
* Chore: updates LogRowModel sorting key from milliseconds to nanoseconds and adds timeEpochNs to tests
* Chore: adds timeEpochNs to LogRowModel mock in Explore LiveLogs test
* Chore: fixes logs model timeEpochNs padding
* Chore: updates timeEpochNs padding in tests
* Chore: updates LogRowModel mocks
* Chore: changes isLoki to datasourceId
* Chore: adds hasFieldWithNameAndType method to FieldCache in grafana-data dataframe
* Chore: changes timeEpochNs from number to string as it can overflow Number.MAX_SAFE_INTEGER
* Chore: updates LogRowModel sorting to use milliseconds and nanoseconds
* Chore: removes datasourceId from logSeriesToLogsModel method
* Chore: updates ResultProcessor tests to include nanosecond-level precision log rows sorting
* Prometheus: Add metadata for summary metrics
- summary metrics don't have metadata available from the metadata API,
so Grafana can help and just add it
- given a summary metric `foo`, we add metadata info for `foo_sum` and
`foo_count`
- with tests
* Update public/app/plugins/datasource/prometheus/language_utils.ts
Co-authored-by: gotjosh <josue@grafana.com>
Co-authored-by: gotjosh <josue@grafana.com>
* added timezone override information.
* added usp.
* added some code comments.
* added more documentation of the date and time functionality.
* Update docs/sources/reference/timerange.md
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
* some small adjustments.
* fixed comments according to feedback.
* Update packages/grafana-data/src/datetime/parser.ts
* Update packages/grafana-data/src/datetime/parser.ts
* Update packages/grafana-data/src/datetime/parser.ts
* fixed final feedback.
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
* common title handling
* show labels
* update comment
* Update changelog for v7.0.0-beta1 (#24007)
Co-Authored-By: Marcus Efraimsson <marcus.efraimsson@gmail.com>
Co-Authored-By: Andrej Ocenas <mr.ocenas@gmail.com>
Co-Authored-By: Hugo Häggmark <hugo.haggmark@grafana.com>
Co-authored-by: Tobias Skarhed <1438972+tskarhed@users.noreply.github.com>
* verify-repo-update: Fix Dockerfile.deb (#24030)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
* CircleCI: Upgrade build pipeline tool (#24021)
* CircleCI: Upgrade build pipeline tool
* Devenv: ignore enterprise (#24037)
* Add header icon to Add data source page (#24033)
* latest.json: Update testing version (#24038)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
* Fix login page redirected from password reset (#24032)
* Storybook: Rewrite stories to CSF (#23989)
* ColorPicker to CSF format
* Convert stories to CSF
* Do not export ClipboardButton
* Update ConfirmButton
* Remove unused imports
* Fix feedback
* changelog enterprise 7.0.0-beta1 (#24039)
* CircleCI: Bump grafana/build-container revision (#24043)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
* Changelog: Updates changelog with more feature details (#24040)
* Changelog: Updates changelog with more feature details
* spell fix
* spell fix
* Updates
* Readme update
* Updates
* Select: fixes so component loses focus on selecting value or pressing outside of input. (#24008)
* changed the value container to a class component to get it to work with focus (maybe something with context?).
* added e2e tests to verify that the select focus is working as it should.
* fixed according to feedback.
* updated snapshot.
* Devenv: add remote renderer to grafana (#24050)
* NewPanelEditor: minor UI twekas (#24042)
* Forward ref for tabs, use html props
* Inspect: add inspect label to drawer title
* Add tooltips to sidebar pane tabs, copy changes
* Remove unused import
* Place tooltips over tabs
* Inspector: dont show transformations select if there is only one data frame
* Review
* Changelog: Add a breaking change (#24051)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
* CircleCI: Unpin grafana/docs-base (#24054)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
* Search: close overlay on Esc press (#24003)
* Search: Close on Esc
* Search: Increase bottom padding for the last item in section
* Search: Move closing search to keybindingsSrv
* Search: Fix folder view
* Search: Do not move folders if already in folder
* Docs: Adds deprecation notice to changelog and docs for scripted dashboards (#24060)
* Update CHANGELOG.md (#24047)
Fix typo
Co-authored-by: Daniel Lee <dan.limerick@gmail.com>
* Documentation: Alternative Team Sync Wording (#23960)
* Alternative wording for team sync docs
Signed-off-by: Joe Elliott <number101010@gmail.com>
* Update docs/sources/auth/team-sync.md
Co-Authored-By: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
* Fix misspell issues (#23905)
* Fix misspell issues
See,
$ golangci-lint run --timeout 10m --disable-all -E misspell ./...
Signed-off-by: Mario Trangoni <mjtrangoni@gmail.com>
* Fix codespell issues
See,
$ codespell -S './.git*' -L 'uint,thru,pres,unknwon,serie,referer,uptodate,durationm'
Signed-off-by: Mario Trangoni <mjtrangoni@gmail.com>
* ci please?
* non-empty commit - ci?
* Trigger build
Co-authored-by: bergquist <carl.bergquist@gmail.com>
Co-authored-by: Kyle Brandt <kyle@grafana.com>
* fix compile error
* better series display
* better display
* now with prometheus and loki
* a few more tests
* Improvements and tests
* thinking
* More advanced and smart default title generation
* Another fix
* Progress but dam this will be hard
* Reverting the time series Value field name change
* revert revert going in circles
* add a field state object
* Use state title when converting back to legacy format
* Improved the join (series to columsn) transformer
* Got tests running again
* Rewrite of seriesToColums that simplifies and fixing tests
* Fixed the tricky problem of multiple time field when not used in join
* Prometheus: Restoring prometheus formatting
* Graphite: Disable Grafana's series naming
* fixed imports
* Fixed tests and made rename transform change title instead
* Fixing more tests
* fix more tests
* fixed import issue
* Fixed more circular dependencies
* Renamed to getFieldTitle
* More rename
* Review feedback
* Fix for showing field title in calculate field transformer
* fieldOverride: Make it clear that state title after applying defaults & overrides
* Fixed ts issue
* Update packages/grafana-ui/src/components/TransformersUI/OrganizeFieldsTransformerEditor.tsx
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
Co-authored-by: Andrej Ocenas <mr.ocenas@gmail.com>
Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>
Co-authored-by: Tobias Skarhed <1438972+tskarhed@users.noreply.github.com>
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
Co-authored-by: Leonard Gram <leo@xlson.com>
Co-authored-by: Ivana Huckova <30407135+ivanahuckova@users.noreply.github.com>
Co-authored-by: Alexander Zobnin <alexanderzobnin@gmail.com>
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
Co-authored-by: Marcus Andersson <marcus.andersson@grafana.com>
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
Co-authored-by: Richard Hartmann <RichiH@users.noreply.github.com>
Co-authored-by: Daniel Lee <dan.limerick@gmail.com>
Co-authored-by: Joe Elliott <joe.elliott@grafana.com>
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
Co-authored-by: Mario Trangoni <mario@mariotrangoni.de>
Co-authored-by: bergquist <carl.bergquist@gmail.com>
Co-authored-by: Kyle Brandt <kyle@grafana.com>
* Correcting one of the usage in documentation
* Correcting usage of a word
* Correcting usage of a word in docs
* Correcting same word in 2 more occurrences
* Correcting a word in docs
* Correcting a word in docs
* Update docs/sources/variables/advanced-variable-format-options.md
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
* Incorporated reviewer's suggestion in other occurrences
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
- the stats label changed in the original PR, so the custom key did no
longer work, this change fixes it and the total bytes processed show up
in the explore logs meta data
* Search: Do not set items if no results returned
* Search: Simplify canSave logic
* Search: Add initialLoading state
* Search: Add itemsFetching state to folder
* Search: Fix props and tests
* Search: Fix strict null check
* Chore: removed regex from LokiQuery
* Chore: removes parseQuery from Loki datasource
* Chore: removes regex param from format query in lokiStreamsToDataframes in Loki result transformer
* Chore: updates formatQuery and removes parseQuery from Loki query utils
* Chore: removes highlighter test with unsupported syntax from Loki query utils
* fixed a couple of bad links.
* adjusted so we use the correct type of links.
* cleaning up links regarding edit/viewing panels.
* fixing edit link.
* reverted back to panelId for the image urls.
* reverted back.
* remvoed the editPanel: null since it is obsolete.
* Moved files
Moved files from guides folder into getting-started folder, added aliases, added Intro to histograms topic
* Updated links
* Update intro-histograms.md
Co-authored-by: Daniel Lee <dan.limerick@gmail.com>
* Prometheus: Add off switch for metric/label name lookup
This will help users with amounts of metric name
data that is too much for a browser to handle.
Autocomplete will be disabled and metrics chooser hidden,
since obviously both rely on this data.
Fixes#22702
* Use onUpdateDatasourceJsonDataOptionChecked
... from `@grafana/data`. Refactor naming to faciliate its
use and stick with prop names as passed down from
`ConfigEditor`.
PLUS:
- Rephrase switch label, add a tooltip and reduce the
size of the to what "Custom query parameters" originally
was.
- Change `languageProvider` type in `PromQueryField`.
* Put language provider back in
Functions and history still work, even when metrics
lookup gets disabled.
Also: Rewording of setting.
* Display a message when lookup got disabled manually
* Call property for setting disableMetricsLookup
* Show disabled metrics chooser instead of warning
* first things
* extract dropdown to component
* sanitize links and titles
* fix import
* remove console log and move typings
* SAML Role and Team sync (open source part) (#23391)
* SAML: add default params for role and team sync
* SAML: add org_mapping option
* SAML: support allowed_organizations option
* Chore: expose RedirectWithError from HTTPServer
* Chore: return RedirectResponse (fix superfluous response.writeheader message)
* HTTPServer: expose ValidateRedirectTo() and CookieOptionsFromCfg()
* Config: move SAML section to the enterprise
* Forms migration: Change password (#23623)
* Migrate ChangePassword
* Add validation
* FieldOverrides: UI updates (#23630)
* UI improvements for field overrides
* Update tests
* Fix missing key
* Fix e2e
* docs/sources/features/datasources/graphite.md: Fix typos
* Inspect: Transformers (#23598)
* WIP: Inspect transformers
* Updated
* Transformations working in inspect drawer and series to columns working as normal transformation
* Minor name change
* Updated
* Updated
* Fix: fixes crash with dataFrameIndex out of bounds
Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>
* Search: migrate manage dashboards (#23530)
* Search: add search wrapper
* Search: add DashboardSearch.tsx
* Search: enable search
* Search: update types
* Search: useReducer for saving search results
* Search: use default query
* Search: add toggle custom action
* Search: add onQueryChange
* Search: debounce search
* Search: pas dispatch as a prop
* Search: add tag filter
* Search: Fix types
* Search: revert changes
* Search: close overlay on esc
* Search: enable tag filtering
* Search: clear query
* Search: add autofocus to search field
* Search: Rename close to closeSearch
* Search: Add no results message
* Search: Add loading state
* Search: Remove Select from Forms namespace
* Remove Add selectedIndex
* Remove Add getFlattenedSections
* Remove Enable selecting items
* Search: add hasId
* Search: preselect first item
* Search: Add utils tests
* Search: Fix moving selection down
* Search: Add findSelected
* Search: Add type to section
* Search: Handle Enter key press on item highlight
* Search: Move reducer et al. to separate files
* Search: Remove redundant render check
* Search: Close overlay on Esc and ArrowLeft press
* Search: Add close button
* Search: Document utils
* Search: use Icon for remove icon
* Search: Add DashboardSearch.test.tsx
* Search: Move test data to a separate file
* Search: Finalise DashboardSearch.test.tsx
* Add search reducer tests
* Search: Add search results loading indicator
* Search: Remove inline function
* Search: Do not mutate item
* Search: Tweak utils
* Search: Do not clear query on tag clear
* Search: Fix folder:current search
* Search: Fix results scroll
* Search: Update tests
* Search: Close overlay on cog icon click
* Add mobile styles for close button
* Search: Use CustomScrollbar
* Search: Memoize TagList.tsx
* Search: Fix type errors
* Search: More strictNullChecks fixes
* Search: Add ManageDashboards.tsx
* Search: Add mergeReducers
* Search: Use mergeReducers
* Search: remove default state from reducers
* Search: Fix recent and starred icons
* Search: Enable search
* Search: Add markup
* Search: Separate manageDashboardsReducer
* Search: Add DashboardActions.tsx
* Use new Select for TagFilter
* Search: Use TagFilter for search filters
* Search: Use TagList
* Search: Add toggleSection
* Search: Add more actions
* Search add manageDashboards.test.ts
* Search: Add getCheckedUids
* Search: Add modify and toggle checked actions
* Search: Update tests
* Search: Update component template
* Search: Enable section toggle
* Search: Derive canMove and canDelete
* Search: Handle delete items
* Search: Fix tests
* Search: Enable toggle items
* Search: Add confirm modal subtitle
* Search: Use theme vars
* Search: Add getCheckedDashboardsUids
* Search: Add MoveToFolderModal
* Search: Enable moving dashboards
* Search: Fix strict null checks errors
* Search: Fix strict null checks errors[2]
* Search: Enable filters
* Search: Add useSearchQuery.ts
* Search: Toggle items when toggling all
* Search: Update useSearchQuery to accept custom params
* Search: Add useSearchQuery to dashboard search
* Search: use SearchField for manage dashboards
* Search: Remove event param from query change
* Search: Add base search hooks
* Search: refactor useSearch to accept reducer
* Search: use useDashboardSearch hook
* Search: Fix useSearchQuery params
* Search: Enable folder search
* Search: Update tests
* Search: Pass the props to manage-dashboards
* Search: Add search filters margin
* Search: Remove search-field-wrapper class and hide logic for it
* Search: Adjust SearchField styles
* Search: Move search-results-container inside SearchResults
* Search: Fix type errors
* Search: Add EmptyListCTA
* Search: Update move message
* Search: Cleanup
* Search: Add todo
* Search: Fix action type
* Search: Use React wrapper vs FolderDashboardsCtrl and DashboardListCtrl
* Search: DashboardList => DashboardListPage
* Search: Remove ManageDashboards from angular_wrappers
* Minor style tweaks
* Search: Use LinkButton
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
* PanelEditorTabs: adds counter to Query, Alert and Transform (#23645)
* Transformers: changes reduce transformer (#23611)
* Transformers: changes reduce transformer
* Refactor: fixes lenght of frame
* Minor tweaks and polish
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
* Docs: Grafana internal metrics update (#23448)
* Update metrics.md
* Updated metrics.md and configuration.md
* Added links to data sources
* Update metrics.md
* Update docs/sources/administration/metrics.md
Co-Authored-By: Carl Bergquist <carl@grafana.com>
Co-authored-by: Carl Bergquist <carl@grafana.com>
Co-authored-by: bergquist <carl.bergquist@gmail.com>
* Remove temporary NewPanelEditorContext (#23652)
* Toolkit: Update slim debian image for e2e testing (#23629)
* Because alpine uses musl instead of libc, the e2e/cypress was not compatible
So:
- Created new VM based on debian-slim
- Could also be used as a build VM
Fixes:
- ginstall issue with merge somewhere.
- Trimmed down the alpine VM since we don't need the extra libraries for cypress
* Fix: Don't need cp on debian
Fix: Don't use /bin/sh on debian. Only for alpine. Use /bin/bash on debian
Fix: Missing dependencies to e2e tests
* Tweaks and comments for ci-improvements, stability, and readibility (#23658)
* Tweaks and comments for ci-improvements, stability, and readibility
- Made naming more obvious and intuitive
- CI supports grafana e2e plus more granular design
(side effect that it takes slightly longer, but negligable)
- disable strict e2e errors through environment variable
- Added tools for linting and for building plugin-ci
* feedback from stevev - remove version. Causes problems
* Overrides: Show option group counters for options that represent collections (#23655)
* NewPanelEdit: Minor edit mode fixes (#23666)
* Minor edit mode fixes
* Updated
* NewPanelEditor: Save dashboard from edit mode now works, and other fixes (#23668)
* QueryEditors: include error when no data is returned (#23632)
* toDataFrame: detect field properties using in rather than hasOwnProperty (#23673)
* Bundled Plugins: fix build issues with DirectInput (#23640)
* pass query error
* and the root
* not optional
* building bundled plugin
* missing file
* remove other branch
* fix prettier
* Docs: Update README.md (#23660)
* Docs: Update documentation-style-guide.md (#23659)
Added Divio link
* Dashboard: Add fields in DashboardMeta (#23647)
* Fix: grafana/ui imports (#23680)
* Prometheus: Fixed error in PromLink
* Prometheus: Fixed error in PromLink, fixed ts issue
* FieldOverride: Support data links via field overrides (#23590)
* Move xss and sanitize packages to grafana-data
* Move text, url and location utils to grafana-data
* Move grafana config types to grafana-data
* Move field display value proxy to grafana-data
* Fix
* Move data links built in vars to grafana-data
* Attach links supplier to when applying field overrides
* Prep tests
* Use links suppliers attached via field overrides
* locationUtil dependencies type
* Move sanitize-url declaration to grafana-data
* Revert "Move sanitize-url declaration to grafana-data"
This reverts commit 11db9f5e55.
* Fix typo
* fix ts vol1
* Remove import from runtime in data.... Make TS happy at the same time ;)
* Lovely TS, please shut up
* Lovely TS, please shut up vol2
* fix tests
* Fixes
* minor refactor
* Attach get links to FieldDisplayValue for seamless usage
* Update packages/grafana-data/src/field/fieldOverrides.ts
* Make storybook build
* NewPanelEdit: Improvements to angular panels and other fixes (#23678)
* Removed old editor components
* Angular panel improvements
* Progress
* Updated tests
* Simple persistence for angular panel option state
* Improving graph edit experiance
* Improving series overrides
* updated e2e test
* Regstry: refactoring
* Table: Improvements to column resizing, style and alignment (#23663)
* Table: Fixed to column alignment
* testing table state reducer
* Styles starting to work
* Persisting column resize now works
* Trying to fix Table storybook stories
* Minor updates
* fixed ts issue
* Table: Support duplicate field names, and use data frame directly instead of copying data and other improvements (#23681)
* Poc at use data frame directly
* working ok
* Table improvements
* Alertmanager: Basic auth should not be required (#23691)
* Storybook: Small fixes (#23692)
* Fix getLogLevelFromKey when non-string supplied (#23654)
* Fix failing master (#23702)
* Store: Error handling for setObject (#23650)
* Error handling for setObject to store
* Update public/app/core/store.ts
Co-Authored-By: kay delaney <45561153+kaydelaney@users.noreply.github.com>
* Update public/app/features/explore/RichHistory/RichHistory.tsx
Co-Authored-By: kay delaney <45561153+kaydelaney@users.noreply.github.com>
* Move setState outside of try-catch block
Co-authored-by: kay delaney <45561153+kaydelaney@users.noreply.github.com>
* Drawer: align component style with PanelInspector (#23694)
* Drawer: add subtitle, expandable button and refactor style
* Drawer: update header style and z-index
* Drawer: refactor Drawer component and PanelInspector
* PanelInspector: add expandable
* Drawer: update stories with new props
* Inspector: rename InspectHeader -> InspectSubtitle
* Inspector: fix tabs spacing
* Drawer: remove z-index
* Update public/app/features/dashboard/components/Inspector/InspectSubtitle.tsx
Co-Authored-By: Dominik Prokop <dominik.prokop@grafana.com>
* Drawer: apply PR feedbacks
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
* Provisioning: Allows specifying uid for datasource and use that in derived fields (#23585)
* Add uid to datasource
* Fix uid passing when provisioning
* Better error handling and Uid column type change
* Fix test and strict null error counts
* Add backend tests
* Add tests
* Fix strict null checks
* Update test
* Improve tests
* Update pkg/services/sqlstore/datasource.go
Co-Authored-By: Arve Knudsen <arve.knudsen@gmail.com>
* Variable rename
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* Refactor search (#23550)
Co-Authored-By: Arve Knudsen <arve.knudsen@grafana.com>
Co-Authored-By: Leonard Gram <leonard.gram@grafana.com>
* Search: Toggle Search based on search query (#23648)
* Search: Toggle Search based on search query
* Search: Fix types and closed search param
* Search: Remove appEvents from SearchWrapper
* Search: Reset folder on close
Co-Authored-By: Alexander Zobnin <alexanderzobnin@gmail.com>
* Search: Disable reloadOnSearch for manage dashboards urls
Co-authored-by: Alexander Zobnin <alexanderzobnin@gmail.com>
* Search: Fix title search null pointer (#23705)
* Add ServerlessDatabaseCapacity to AWS/RDS metrics (#23635)
* Dashboard: Add failsafe for slug generation (#23709)
* Transformers: calculate a new field based on the row values (#23675)
* TableCell: show JSON rather than [object Object] (#23683)
* NewPanelEditor: Move visualisation picker to the sidebar pane (#23696)
* Move visualisation picker to the sidebar pane
* Remove vis tab from bottom pane
* Visualisation to panel type title
* docs/sources/features/dashboard/dashboards.md: Improve language
* docs/sources/installation/configuration.md: Improve language
* docs/sources/administration/metrics.md: Improve language
* CSS: Various css bug fixes (Safari fix for graph panels and more) (#23704)
* CSS: Various css bug fixes
* Updated
* InputDatasource: Fixed prettier errors (#23679)
* InputDatasource: Fixed prettier errors
* Fixed prettier config in toolkit to make it consistent with grafana core prettier config
* Docs: run the api-extractor on master to update docs (#23726)
* regenerated packages docs.
* fixed spelling issues.
* fixed spelling issues.
* Input: Width prop (#23615)
* Add width property
* Remove unused import
* Spelling mistake
* Add width to interface
* Make width optional
* Remove size
* Update snapshot
* Remove size from places
* Add size prop for button
* Update width
* Update snapshots
* Docs: Datasource uid docs (#23700)
* @grafana/ui: Fix login icon (#23732)
* Fix sign in button
* Fix modal button in button
* Dashboard: Update tests for testing fallback support (#23730)
* Form migrations: Final components to LegacyForms (#23707)
* FormField to LegacyForms
* FormLabel to InlineFormLabel
* Move SecretFormField to LeagcyForms
* NewPanelEditor: UI update of add panel widget (#23715)
* Small update proposal to add panel widget
* Fix smoketest
* Minor tweaks
* update snaps god damn it
* Tracing: Add some error handling to JaegerQueryField (#23599)
* docs/sources/plugins/developing/datasources.md: Improve language
* Search: raise service init prio (#23740)
* Remove file (#23741)
* Backend plugins: Renderer v2 plugin (#23625)
grafana-plugin-model is legacy and is replaced by new backend
plugins SDK and architecture. Renderer is not part of SDK and
we want to keep it that way for now since it's highly unlikely there
will be more than one kind of renderer plugin.
So this PR adds support for renderer plugin v2.
Also adds support sending a Device Scale Factor parameter to the
plugin v2 remote rendering service and by that replaces #22474.
Adds support sending a Headers parameter to the plugin v2 and
remote rendering service which for now only include
Accect-Language header (the user locale in browser when using
Grafana), ref grafana/grafana-image-renderer#45.
Fixes health check json details response.
Adds image renderer plugin configuration settings in defaults.ini
and sample.ini.
Co-Authored-By: Arve Knudsen <arve.knudsen@gmail.com>
* UI: Adds option to limit number of visible selected options for Select component (#23722)
* UI: Adds option to limit number of visible selected options to Select component
* Prettier: Add prettier config that imports prettier from toolkit (#23729)
* TextArea: Fixed default height (#23743)
* Image Rendering: Make it work using serve_from_sub_path configured (#23706)
Make rendering work when using serve_from_sub_path and not have rendering.renderer_url configured.
Fixes#21925
* docs/sources/tutorials/ha_setup.md: Fix typo
* Docs: Grammatical correction in documentation (#23752)
* Tracing: Change color palette. (#23656)
* Docs: Minor typo fix in documentation (#23745)
* TablePanel: avoid toArray for memoizedData (#23744)
* DevEnv: Revert to clean stale assets (#23742)
* Dashboard import: Bug fixes (#23591)
* clear dashboard on unmount
* fix menu z-index, folderpicker width
* fix issue with saving dashboard in another folder
* use foldermodel instead of selectablevalue
* using z-index from theme
* updated names
* update snapshot
* remove size from folderpicker
* use connectWithCleanup
* update snapshot
* docs/sources/features/explore/index.md: Fix language
* Docker: Fix root docker file build (#23772)
Fixes#23754
* Search: Load folder page (#23768)
* Drawer: update z-index to show tooltips (#23770)
* DataSourceProxy: Handle URL parsing error (#23731)
* pluginproxy: Handle URL parsing error
* pkg/api: Validate data source URLs
* pkg/api: Return 400 for URL validation error
* Dockerfile: Copy in the tools directory, to fix build (#23773)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
* E2E: Fixed e2e test issue due to change in testdata scenario change logic (#23774)
* VizRepeater: fixed issue with resolved auto orientation passed back from VizRepeater (#23767)
* VizRepeater: fixed issue with resolved auto orientation passed back from VizRepeater
* Updated variable name
* Transformers: adds labels as columns transformer (#23703)
* Transformers: adds labels as columns transformer
* Refactor: adds support for same timestamps with different labels
* Refactor: adds basic transform ui
* Refactor: adds sorted result
* Refactor: renames transformer
* Transformations: Improve UI and add some love to filter by name (#23751)
* Change filterByName options to accept arrays instead of strings
* Improve transformations UI
* Minor updates
* Minor UI changes
* Review
* Datasource/Loki: Remove code dealing with legacy Loki endpoints (#23437)
* Docs: Move Postgres version warning and remove details (#23782)
* docs/sources/installation/upgrading.md: Fix language
* UI: add InfoBox component (#23701)
* UI: inherit LinkButton props from ButtonHTMLAttributes
* Chore: fix implicit any
* UI: add InfoBox component
* UI: fix InfoBox border color
* Chore: use new style for defining stories
* Chore: InfoBox refactor
* Chore: inherit className attribute from HTMLDivElement
* Select: Fixed z-index issue (#23786)
* Forms migration: LayoutSelector (#23790)
* Buttons: Center text in buttons (#23789)
* Buttons: Center buttons
* Updated size of transformation button
* removed snapshot
* Transformations: Make sidebar subscribe to panel's query runner (#23785)
* Make panel edit sidebar options use lates data from panel query runner
* Update select's z-index
* Review
* Logs: Add href to internal link (#23757)
* PanelEditor: stores option group collapse state (#23781)
* PanelEditor: stores option group collapse state
* Refactor: adds props to OptionsGroup instead
* Docs: Correcting a reference link in documentation (#23747)
* Correcting a reference link in documentation
* Changed link as relative path, as asked by reviewer
* Search add sorting picker (#23746)
* Search: Extend search_srv with getSortOptions
* Search: Enable sorting
* Search: Fullwidth search
* Search: Add SortPicker
* Search: Add useSearchLayout
* Search: Update sort query
* Search: Refactor items rendering
* Search: Add sort to manage dashboards
* Search: Add sort icon
* Search: Mock getSortOptions
* Search: Fix Select sizes
* Search: Move SortPicker to Select
* Grafana-UI: Add ActionRow.tsx
* Grafana-UI: Use ActionRow in dashboard search
* Grafana-UI: Update ActionRow styles
* Search: Update tests
* Search: enable clearing TagFilter
* Search: Move getSortOptions outside of component
* Search: Fix import
* Search: Limit container width
* Search: Replace SearchField's clear text with icon
* Search: Fix section items query #23792
* Search: Add icons for layout switch
* Search: Remove layout switch for folder page
* Search: Fix strict null errors (#23804)
* Transformations: debug mode tweaks (#23802)
* Transformations: UI tweaks, filter by name regex validation (#23800)
* Add validation to filter by name regex, minor layout tweaks
* Use cards uin for non configured transformations
* UI Docs: ColorPicker component group (#23366)
* Create .mdx for ColorPicker component group
Describes the building blocks of the component and how they work together.
* Rename ColorPicker.mdx to ColorPicker.story.mdx
* Update packages/grafana-ui/src/components/ColorPicker/ColorPicker.story.mdx
Clean up tags
Co-Authored-By: Tobias Skarhed <1438972+tskarhed@users.noreply.github.com>
* Update packages/grafana-ui/src/components/ColorPicker/ColorPicker.story.mdx
Co-Authored-By: Tobias Skarhed <1438972+tskarhed@users.noreply.github.com>
Co-authored-by: Tobias Skarhed <1438972+tskarhed@users.noreply.github.com>
* Explore: Fix split functionality (#23801)
* Fix splitting functionality, remove passing of parameters from button
* Format comment
* Security: Fix annotation popup XSS vulnerability (#23813)
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
* Typeahead: Fix z-index (#23809)
* Plugins: show signing status on datasources and plugins (#23542)
* show signing status
* show signing status
* Progress on signed badge style
* Progress on signing status look and updated card background
* Updates
* Transforms card tweak
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
* CircleCI: Upgrade shellcheck to v0.7.1 and pin version (#23815)
* CircleCI: Upgrade shellcheck to v0.7.1 and pin version
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
* Table: Add default cell link style and tooltip to data links in table (#23818)
* TablePanel: Fix XSS issue in header column rename (#23816)
* prevent xss
* added escaping on tooltip.
* Rebase done
Co-authored-by: Marcus Andersson <marcus.andersson@grafana.com>
* Rendering: makes sure IsAvailable can be used during init of other services (#23817)
* Rendering: makes sure service knows if it is configured after Init()
* Rendering: refactor
* Transformations: Organise fields transformer fixes & detailing (#23812)
* Transformers: Organise fields transformer detailing
* Table header cell - fix text overflowing columns
* Backend: Remove Go vendor folder (#23796)
* CHANGELOG.md: Update (#23831)
* CHANGELOG.md: Update
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
* Update latest.json (#23833)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
* Backend Plugins: (breaking change) Add PluginContext (#23788)
* breaking change for newer backend plugins
* use exported protobuf converters and sdk types to reduce duplicate code
* uses grafana-plugin-sdk-go@v0.54.0
* NewPanelEditor: don't break when plugin is skipDataQuery (#23836)
* Tracing: Remove feature flag (#23834)
* Logs: Derived fields link design update (#23695)
* Toolkit: fixes for security and publishing (#23749)
* Fixes and security patches:
1. Always keep the source directory, just don't package the source
2. Do not publish the SSH key for common plugin tasks.
Changed to environment variable
* env variable renamed.
* Re-added the src remove
* touch config.yml for rebuild
* NewDataSourcePage: Restore signature badge lost in merge (#23832)
* NewPanelEditor: bring back queries not being run on editmode navigation (#23837)
* Docs: URL update to Relref to repair broken links (#23783)
* NewPanelEditor: Panel edit tweaks (#22415)
* NewPanelEditor: Alternative edit layout
* Fixed full height issue
* panel-edit-tabs experiment
* minor tweaks
* PanelEditor: Minor tweaks
* Docs: URL update to Relref to repair broken links
Rewrote URL references in the text for the Administration guide
and older Whats New page to repair broken links, and change
to the Relref format to build the website with Hugo.
Closes#22378
* Remove stale file, caught in this
branch and PR from my Fork. contribute/style-guides/markdown-style-guide.md
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* e2e: adds inspect drawer tests (#23823)
* Explore: Create basic E2E test
* Feature: adds e2e tests for panel inspector
* Refactor: adds ts-ignore because of type checking errors
* Refactor: changes after PR comments and updates snapshot
* Refactor: adds typings back for IScope
* Refactor: changes after PR comments
Co-authored-by: Andreas Opferkuch <andreas.opferkuch@gmail.com>
* Form migrations: Teams and alert list (#23810)
* Basic migration
* Update test
* Fix feedback
* Forms migration: Data/Panel link editor (#23778)
* DataLink input to new form styles
* Make Angular work with inline editor
* Remove onRemove and desiableRemove
* Remove DataLinksEditor
* Change order of inputs
* Enable syntax highlight
* Fix datalinks for Elastic
* Fix PromQuery cascader when selected option has no children (#23835)
* Adding debug line to search ldap. (#23824)
* Search/virtualize list (#23710)
* Search: Add FixedSizeList for result items
* Search: Move SectionHeader to a separate file
* Search: Add useListHeight hook
* Search: Fix horizontal scrollbar
* Search: Remove custom scrollbar
* Search: Do not fetch dashboard folder on route change
* Search: Update tests
* Search: Remove extra checkbox renders
* Search: Move wrapper ref outside search results
* Search: Fix param type
* Search: Fix merge conflicts
* Search: Virtualize dashboard list
* Search: Update layout
* Search: Pass wrapper to search results
* Search: Update dashboard redirect
* Search: Remove unused css
* Search: Revert config
* Search: Use AutoSizer
* Search: Remove redundant appEvents call
* Search: Use List layout in folder view
* Transformations: Simple fix for labels to fields problem with time series field names (#23828)
* Simple fix for labels to fields transform problem
* Added unit test
* dsproxy: adds support for url params for plugin routes (#23503)
* dsproxy: adds support for url params for plugin routes
* docs: fixes after review
* pluginproxy: rename Params to URLParams
* Update pkg/plugins/app_plugin.go
Co-Authored-By: Arve Knudsen <arve.knudsen@gmail.com>
* Apply suggestions from code review
Co-Authored-By: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
Co-Authored-By: Arve Knudsen <arve.knudsen@gmail.com>
* pluginproxy: rename struct
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
* Alerting: Handle image renderer unavailable when edit notifiers (#23711)
If no image renderer available/installed when adding a new alert notification
channel will set Include image to false per default, otherwise true as before.
If no image renderer available/installed when adding/edit alert notification
channel will show an informational message that you need to install the
Grafana Image Renderer plugin for Grafana to be able to render an image.
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* Alerting: Upload error image when image renderer unavailable (#23713)
When Include image is enabled for an alert notification channel, but there's
no image renderer available/installed when sending notification an error
image will be uploaded/attached explaining that you need to install the
Grafana Image Renderer plugin.
Ref #13802
Co-Authored-By: Arve Knudsen <arve.knudsen@gmail.com>
* Metriktank: Linage UI updates (#23848)
* e2e: adds e2e for panel edit (#23849)
* Explore: Create basic E2E test
* Feature: adds e2e tests for panel inspector
* Refactor: adds ts-ignore because of type checking errors
* Refactor: changes after PR comments and updates snapshot
* Refactor: adds typings back for IScope
* e2e: adds e2e for panel edit
Co-authored-by: Andreas Opferkuch <andreas.opferkuch@gmail.com>
* CloudWatch: Prefer webIdentity over EC2 role also when assuming a role (#23807)
Same as #23452 but for assumed roles.
When using service accounts (webIdentity) on EKS in combination
with assuming roles in other AWS accounts Grafana needs to retrieve
the service account credentials first and then needs to assume the
configured role.
* Devenv: fix prometheus scrape ips (#23850)
* Devenv: fix prometheus scrape ips
* Devenv: fix grafana in devenv reference
* Devenv: fixes prom random data reference
* Docker: Upgrade to Ubuntu 20.04 in Dockerfiles (#23852)
* Chore: Upgrade to Ubuntu 20.04
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
* PanelEditor: Fixed switch tabs (#23859)
* Grafana-UI: Extend Layout props (#23771)
* Grafana-UI: Extend Layout props
* Grafana-UI: Merge container styles
* Search: Fix prop types
* Grafana-UI: remove className prop
* Dashboard: Handle no renderer available in panel share dialog (#23856)
Show a message when sharing dashboard panel on the Link tab and
there's no renderer available/installed.
Ref #13802
* Storybook sorting (#23857)
* Resort Icon.story.tsx into Docs Overview category
* Make CallToActionCard.story.tsx internal
* Move ThemeColors to Docs Overview category
* Move Tag.story.tsx to Forms category
* Move TagList.story.tsx to Forms category
Co-authored-by: Clarity-89 <homes89@ukr.net>
* Tracing: Zipkin datasource (#23829)
* Search: cleanup old Angular files (#23860)
* Search: Remove wrapperRef
* Search: Remove angular search files
* Search: Unify search types
* Search: Remove redundant hideHeader prop
* Search: Remove app/types/search.ts
* Search: Update imports
* Search: Fix type errors
* Migration: Alerting - notifications list (#22548)
* Handle empty list
* Connect to redux
* Finish migration
* Remove comments
* Remove old files
* Remove console log
* Remove old import
* Forgot to add the new button
* Fix href
* Fix feedback
* Rich history: Fix create url and run query & style updates (#23627)
* Styling updates
* Create getQueryFromDisplayText method for Jaeger, Loki, Prometheus
* Fix createLink and runQuery methods for all datasources
* Update test
* Update Select from Legacy to current
* Update filtering
* Update public/app/core/utils/richHistory.test.ts
* Fix strictnullcheck errors
* Remove getQueryFromDisplayText method, as not needed
* Update saving of full query and use displayText for formatting
* Update tests
* Refactor create data query
* Remove parsing, store object instead
* Fix formatting error
* Remove object checking, transform everything to DataQuery
* Remove console.log
* Rename migrate function, add datasourceName as a useEffect dependency
* Fix z-index, move query
* Packages: Bundle plugins (#23787)
* Add manifest for external plugins
* CircleCI: Build internal plug-ins
* CircleCI: Package internal and external plug-ins
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
* Search: Improving search look and feel (#23854)
* Search: Improving search look and feel
* Fixed issue with tag filter beeing cramped and wrapping tags
* Minor tag polish
* fixed type
* adds template for backend datasource (#23864)
* Zipkin: Add method to display query text (#23870)
* Docs: Add version note about Stackdriver SLO queries (#23844)
Ref #22917
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
* Revert rc-slider dependency update, add z-index to tooltip (#23873)
* Search: Improvements to design (#23874)
* Search: updated design
* Fixed z-index
* Fixes
* Minor pixel push
* NewPanelEditor: Make variables wrap and small layout refactor (#23862)
* NewPanelEditor: Make variables wrap and small layout refactor
* review fix
* Singlestat: Adds migration button and logic to migrate singlestat to stat panel (#23845)
* Singlestat: Migration button to migrate to new stat panel
* updated test
* ManageDashboards: Fixes and improvements (#23879)
* ManageDashboards: Fixes and improvements
* Fixed tests
* Fixed issue with item height and margin
* RadioButtons: Updates design and no longer full width in panel edit (#23883)
* Migration: Admin org edit page (#23866)
* Start migration
* Migrate admin org edit page
* NewPanelEditor: adjust panel menu items (#23888)
* Minor grammatical correction (#23885)
* Minor change for better readability (#23884)
* NewPanelEditor: increase sidebar min width, value mappings radio no longer full width (#23889)
* Docs: Plugin docs for Dataframes (#23483)
Co-authored-by: Carl Bergquist <carl@grafana.com>
Co-authored-by: bergquist <carl.bergquist@gmail.com>
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
Co-authored-by: Marcus Olsson <accounts+github@marcus.se.net>
* PanelPlugin: add deprecation notice to setEditor method (#23895)
* Datasource/Cloudwatch: Adds support for Cloudwatch Logs (#23566)
* Datasource/Cloudwatch: Adds support for Cloudwatch Logs
* Fix rebase leftover
* Use jsurl for AWS url serialization
* WIP: Temporary workaround for CLIQ metrics
* Only allow up to 20 log groups to be selected
* WIP additional changes
* More changes based on feedback
* More changes based on PR feedback
* Fix strict null errors
* Docs: Edit prometheus data source doc (#23760)
* Update prometheus.md
* Editing
* Update prometheus.md
* Update add-a-data-source.md
* Update prometheus.md
Co-authored-by: Daniel Lee <dan.limerick@gmail.com>
* Search: Minor tweak to placeholder color
* Minor grammatical correction (#23898)
* Docs: Add doc comments for PanelPlugin (#23896)
* Fix grammatical errors in documentation (#23900)
Co-Authored-By: Arve Knudsen <arve.knudsen@gmail.com>
* grafana/toolkit: Do not suggest Angular panel anymore, add note about Grafana tutorials (#23902)
* NewPanelEditor: vis picker UI update (#23894)
* Fix storybook
* Add deprecated/alpha badge to panels in viz picker, fix long title display
* Move getFocusCss to mixins
* Updated hover/active state of vis picker item
* try fixing e2e
* Add removed label for e2e to be happy happy happy
* Search: Fix expanded folder icon (#23903)
* QueryTab: Design updates (#23906)
* WIP: first stage
* Another take
* argghhh
* Updated
* My brain is mush
* Minor progress
* Progres
* Starting to work
* Fixes
* fixed e2e
* Chore: show grafana labs not project (#23913)
* DashboardSave: fix save dashboard when changes are detected (#23909)
* e2e: creates a separate package for selectors (#23858)
* Initial commit
* Chore: fixes after merge
* Chore: removes todos
* Chore: uncomment test
* Chore: adds missing externals to rollup config
* Refactor: selectors is master for everything
* Docs: updates Docs
* Chore: adds e2e-selectors to publish
* Angular/Forms migration: Orgs list (#23821)
* Create new components
* Fix async issues
* Remove comments
* Update public/app/features/admin/AdminOrgsTable.tsx
* Update public/app/features/admin/AdminListOrgsPage.tsx
* Update public/app/features/admin/AdminListOrgsPage.tsx
* Remove angular code
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
* Fix strict nulls (#23931)
* azuremonitor: fix for app insights azure china url (#23877)
* DashNav: refactor action buttons and custom content (#23868)
* DashNav: refactor action buttons and custom content
* DashNav: remove code duplication
* DashNav: fix custom element display
* DashNav: fix strictNullChecks
* docs/sources/features/datasources/testdata.md: Fix language
* Icon: Update sigin icon (#23933)
* NewPanelEditor: Fix visualisation list badge verflow (#23936)
* Search/fix folder sort (#23893)
* Search: Move layout to query reducer/hook
* Search: Refactor search_srv
* Search: Fix types
* Search: Move extra layout/sort logic to reducer
* Search: Fix Select min-width
* Search: Fix filter by starred
* Search: Update tests
* Search: Simplify query return
* Search: Set width to auto on HorizontalGroup
* Search: Fix tests
* Fix build-container (#23942)
* Search: Replace search implementation (#23855)
* Rendering: Add metrics (#23827)
* Rendering: base metrics
* Rendering: rendering_queue_size metric
* Chore: fix linter error
* Rendering metrics: refactoring
* Apply suggestions from code review
Co-Authored-By: Marcus Efraimsson <marcus.efraimsson@gmail.com>
* Rendering metrics: handle DeadlineExceeded errors
* Rendering metrics: don't measure canceled request time
* Rendering metrics: revert deleting summary for canceled requests
* Update pkg/services/rendering/rendering.go
Co-Authored-By: Marcus Efraimsson <marcus.efraimsson@gmail.com>
* Rendering: return ErrTimeout if context deadline exceeded
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
* docs/sources/features/datasources/prometheus.md: Fix language
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* docs/sources/features/datasources/opentsdb.md: Language improvements
* docs/sources/features/datasources/mysql.md: Improve language
* DateTime: adding support to select preferred timezone for presentation of date and time values. (#23586)
* added moment timezone package.
* added a qnd way of selecting timezone.
* added a first draft to display how it can be used.
* fixed failing tests.
* made moment.local to be in utc when running tests.
* added tests to verify that the timeZone support works as expected.
* Fixed so we use the formatter in the graph context menu.
* changed so we will format d3 according to timeZone.
* changed from class base to function based for easier consumption.
* fixed so tests got green.
* renamed to make it shorter.
* fixed formatting in logRow.
* removed unused value.
* added time formatter to flot.
* fixed failing tests.
* changed so history will use the formatting with support for timezone.
* added todo.
* added so we append the correct abbrivation behind time.
* added time zone abbrevation in timepicker.
* adding timezone in rangeutil tool.
* will use timezone when formatting range.
* changed so we use new functions to format date so timezone is respected.
* wip - dashboard settings.
* changed so the time picker settings is in react.
* added force update.
* wip to get the react graph to work.
* fixed formatting and parsing on the timepicker.
* updated snap to be correct.
* fixed so we format values properly in time picker.
* make sure we pass timezone on all the proper places.
* fixed so we use correct timeZone in explore.
* fixed failing tests.
* fixed so we always parse from local to selected timezone.
* removed unused variable.
* reverted back.
* trying to fix issue with directive.
* fixed issue.
* fixed strict null errors.
* fixed so we still can select default.
* make sure we reads the time zone from getTimezone
* Disable emitDataRequest from explore (#23926)
* NewPanelEditor: fix wrong path to time regions template causing panel editor to bug (#23946)
* Storybook: Add intro and reorganize (#23924)
* Update Intro
* Reorganize stories
* Hide panel for ThemeColors
* Update packages/grafana-ui/src/components/ColorPicker/ColorPicker.story.mdx
Co-Authored-By: Alex Khomenko <Clarity-89@users.noreply.github.com>
* Update intro
* Hide panel on Icon story
* Update README
* Add link
Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
* Search: Adds search to main nav and removes open search click on dashboard name (#23943)
* Search: Adds search to main nav and removes open search click on dashboard name
* Updated snapshots
* Fixed strict null errors
* Fixed type issue
* Dashboard: Enforce min dashboard refresh interval to 5 seconds per default (#23929)
Fixes#22493
* Build: adding support to rollup *.json files to include moment-timezone data. (#23951)
* Image Rendering: New setting to control render request concurrency (#23950)
Fixes#23806
Co-Authored-By: Torkel Ödegaard <torkel@grafana.com>
Co-Authored-By: Arve Knudsen <arve.knudsen@gmail.com>
* PanelEditor: Fixed issue with PanelModel change plugin type (#23949)
* azuremonitor: port azure log analytics query function to the backend (#23839)
* azuremonitor: add support for log analytics macros
Also adds tests for the kql macros
* azuremonitor: backend implementation for Log Analytics
* azuremonitor: remove gzip header from plugin route
The Go net/http library adds an accept encoding header
for gzip automatically.
https://golang.org/src/net/http/transport.go\#L2454
So no need to specify it manually
* azuremonitor: parses log analytics time series
* azuremonitor: support for table data for Log Analytics
* azuremonitor: for log analytics switch to calling the API...
...from the backend for time series and table queries.
* azuremonitor: fix missing err check
* azuremonitor: support Azure China, Azure Gov...
for log analytics on the backend.
* azuremonitor: review fixes
* azuremonitor: rename test files folder to testdata
To follow Go conventions for test data in tests
* azuremonitor: review fixes
* azuremonitor: better error message for http requests
* azuremonitor: fix for load workspaces on config page
* azuremonitor: strict null check fixes
Co-authored-by: bergquist <carl.bergquist@gmail.com>
* Update data frame concept doc (#23921)
* Update data frame concept doc
* Fix typo
* Fix typo
* Fix Dockerfile* (#23954)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
* Search/ui issues (#23945)
* Search: Move layout to query reducer/hook
* Search: Move extra layout/sort logic to reducer
* Search: Tweak action row spacing
* Search: Update TagOption
* Search: Remove duplicate function
* Search: Add Clear tags button
* Search: Align checkbox
* Search: Add TagFilter.displayName
* Search: Update default placeholder
* Search: Return all dashboards for list view
* Search: Apply custom line-height to ActionRow checkbox
* MaxDataPoints: Now used in interval calculation for all data sources (#23915)
* MaxDataPoints: Now enabled for all
* Updates to code and test
* Moved the panel query inspector
* PaneQueryRunner: Simplify logic and only take in maxDataPoints not width
* Make sidemenu header accept onClick events (#23957)
* backend_plugins: duration support in Frame (#23962)
sdk v0.57.0
go mod tidy
* PanelEditor: fixes save/apply for undefined props in restoreModel (#23939)
* PanelEditor: fixes save/apply for undefined props in restoreModel
* Refactor: changes after PR comments
* Refactor: changes sourcePanel refresh strategy
* Added unit tests and minor refactoring of method, starting with cleanup, then setting properties from model
* Update public/app/features/dashboard/state/PanelModel.test.ts
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
* docs: adds provisioning config example (#23940)
* Docs: Minor correction in documentation (#23899)
* Minor correction in documentation
* Refactoring the previous change
* Docs: Add DescribeAlarmHistory to minimal IAM policy (#23965)
DescribeAlarmHistory is used in the annotations query.
* Image rendering: Fix missing icon on plugins list (#23958)
Fixes#23189
* Dashboard: Handle min refresh interval when importing dashboard (#23959)
If refresh interval is lower than minimum refresh interval
when importing dashboard, use the minimum refresh interval
instead of returning error.
Fixes#23099
* Docs: Multiple changes to make document easier to read (#23842)
* multiple changes to make document easier to read
* Update docs/sources/features/datasources/loki.md
Co-Authored-By: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
* Update docs/sources/features/datasources/loki.md
Co-Authored-By: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
* Update docs/sources/features/datasources/loki.md
Co-Authored-By: Arve Knudsen <arve.knudsen@gmail.com>
* Update docs/sources/features/datasources/loki.md
Co-Authored-By: Arve Knudsen <arve.knudsen@gmail.com>
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* Docs: Suggesting multiple changes for better readability (#23843)
* Suggesting multiple changes for better readability
* Update docs/sources/features/datasources/mssql.md
Co-Authored-By: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
* Update docs/sources/features/datasources/mssql.md
Co-Authored-By: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
* Update docs/sources/features/datasources/mssql.md
Co-Authored-By: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
* Docs: Mark macro examples as code (#23932)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
* Docs: Add DescribeAlarms to minimal IAM policy (#23968)
DescribeAlarmHistory is used in the prefix matching of the annotations query
* Panels: Update panel logos (#23964)
* Various 7.0 UI tweaks (#23972)
* Set min height of panel pane to 200px
* Disable badge on viz picker when item is in disabled in search results
* Fix UserProfile inputs width
* Remove select caret in user admin permissions editor
* fix 23911
* Explore: Fix query rows styles (#23973)
* CloudWatch: Remove cloud watch flag (#23974)
* TestData/Graph: load arrow and zoom to data range (#23764)
* Docs: Fix building of docs (#23923)
* Docs: Fix building of docs
* CircleCI: Fixate grafana/docs-base image revision in job for building docs
* Docs: enable packages reference docs for 7-beta (#23953)
* added packages reference menu item.
* removed the draft flag.
* Updated docs by running script.
* AlertTab: some ui updates (#23971)
* updated the alerting tab.
* changed so we use a confirm button.
* removed uncommeneted import.
* Change to secondary buttons
Co-Authored-By: Dominik Prokop <dominik.prokop@grafana.com>
* trying to fix issue with panel of undefined.
* Fix prettier
* Update public/app/features/alerting/AlertTab.tsx
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
* Docs: Query history 7.0 updates (#23955)
* Update docs about query history
* Update docs/sources/features/explore/index.md
Co-Authored-By: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
* Metrictank: Fix meta inspector consolidator field names (#23838)
to match https://github.com/grafana/metrictank/pull/1798
* Chore: Update Grafana version (#23985)
* Update Grafana version
* fix after merge
* merge conflicts
* migration script and new icons in editor
* revert migration, use iconmap lookup
* add tooltip
* cleanup after merge
* revert
* remove angular dashboard links and related components
Co-authored-by: Alexander Zobnin <alexanderzobnin@gmail.com>
Co-authored-by: Tobias Skarhed <1438972+tskarhed@users.noreply.github.com>
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
Co-authored-by: Mohit Nain <Mohit_Nain@infosys.com>
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>
Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
Co-authored-by: Carl Bergquist <carl@grafana.com>
Co-authored-by: bergquist <carl.bergquist@gmail.com>
Co-authored-by: Stephanie Closson <srclosson@gmail.com>
Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
Co-authored-by: Agnès Toulet <35176601+AgnesToulet@users.noreply.github.com>
Co-authored-by: Ivana Huckova <30407135+ivanahuckova@users.noreply.github.com>
Co-authored-by: kay delaney <45561153+kaydelaney@users.noreply.github.com>
Co-authored-by: Andrej Ocenas <mr.ocenas@gmail.com>
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
Co-authored-by: Emil Tullstedt <sakjur@gmail.com>
Co-authored-by: Arve Knudsen <arve.knudsen@grafana.com>
Co-authored-by: Leonard Gram <leonard.gram@grafana.com>
Co-authored-by: Jack Stevenson <jackstevenson@users.noreply.github.com>
Co-authored-by: Amal <56926487+amalkurup89@users.noreply.github.com>
Co-authored-by: Marcus Andersson <marcus.andersson@grafana.com>
Co-authored-by: Leonard Gram <leo@xlson.com>
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
Co-authored-by: Jess <53754871+jessover9000@users.noreply.github.com>
Co-authored-by: Kyle Brandt <kyle@grafana.com>
Co-authored-by: Joseph Robinson <josephremail@gmail.com>
Co-authored-by: Andreas Opferkuch <andreas.opferkuch@gmail.com>
Co-authored-by: Omar Nahhas Sanchez <omar@innovativerealities.com>
Co-authored-by: Daniel Lee <dan.limerick@gmail.com>
Co-authored-by: Johannes Brück <6677058+bruecktech@users.noreply.github.com>
Co-authored-by: Clarity-89 <homes89@ukr.net>
Co-authored-by: tmarszal <tmarszal@gmail.com>
Co-authored-by: Marcus Olsson <accounts+github@marcus.se.net>
Co-authored-by: Sofia Papagiannaki <papagian@users.noreply.github.com>
Co-authored-by: Jon Gyllenswärd <jon.gyllensward@grafana.com>
Co-authored-by: Jan Garaj <jan.garaj@gmail.com>
Co-authored-by: Dieter Plaetinck <dieter@grafana.com>
* Loki: Show loki datasource stats in panel inspector
- puts the loki query result stats into the query results meta stat API
of Grafana, this allows the display of all backend loki stats in the
panel inspector in the dashboards
- added a hack to also display one of those values in Explore as a meta
label using the dataframe meta `custom` mechanims to point to a single
stat entry for each series which is then added together to show total
bytes processed across all query row results (this should be changed for
7.1 to make full use of the panel inspector in Explore)
* Fix test
* nicer stats labels for loki stats with units
* Chore: upgrades Cypress to 4.5.0
* Refactor: splits up huge it into several
* Refactor: prevent flakiness
* Refactor: updates yarn.lock
* Refactor: changes after PR comments
* Refactor: uses e2e.flows instead of import
* extract out the field creation parts
* extract out the field creation parts
* three math modes
* better timeseries support
* TestData/Graph: load arrow and zoom to data range (#23764)
* Docs: Fix building of docs (#23923)
* Docs: Fix building of docs
* CircleCI: Fixate grafana/docs-base image revision in job for building docs
* Docs: enable packages reference docs for 7-beta (#23953)
* added packages reference menu item.
* removed the draft flag.
* Updated docs by running script.
* AlertTab: some ui updates (#23971)
* updated the alerting tab.
* changed so we use a confirm button.
* removed uncommeneted import.
* Change to secondary buttons
Co-Authored-By: Dominik Prokop <dominik.prokop@grafana.com>
* trying to fix issue with panel of undefined.
* Fix prettier
* Update public/app/features/alerting/AlertTab.tsx
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
* Docs: Query history 7.0 updates (#23955)
* Update docs about query history
* Update docs/sources/features/explore/index.md
Co-Authored-By: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
* Metrictank: Fix meta inspector consolidator field names (#23838)
to match https://github.com/grafana/metrictank/pull/1798
* Chore: Update Grafana version (#23985)
* Update Grafana version
* Docs: What's new in 7.0 placeholder (#23987)
* Docs: What's new in 7.0 placeholder
* Updated makefile
* Search: minor fixes (#23984)
* Search: Use folder id as key when present
* Search: Do not render modals if not open
* Enterprise: List 7.0 features (#23956)
* CircleCI: Fix triggering of jobs for releases (#23999)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
* Fix pagination of issues/PR's in changelog generator (#23997)
Fix pagination of issues/PR's in changelog generator
* Search: Convert time pickers to CSF (#24002)
* updated docs for reporting (#23733)
* updated docs
* peering comments
* Added info about what version test mails requires
* Tracing: Fix view bounds after trace change (#23994)
* Docs: fix image link (#24011)
* Update whats new (#24012)
* Chore: Put what's new and release notes URLs in package.json (#24006)
* Put what's new and release notes URLs in package.json
* Upgrade build pipeline tool
* Update changelog for v7.0.0-beta1 (#24007)
Co-Authored-By: Marcus Efraimsson <marcus.efraimsson@gmail.com>
Co-Authored-By: Andrej Ocenas <mr.ocenas@gmail.com>
Co-Authored-By: Hugo Häggmark <hugo.haggmark@grafana.com>
Co-authored-by: Tobias Skarhed <1438972+tskarhed@users.noreply.github.com>
* verify-repo-update: Fix Dockerfile.deb (#24030)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
* CircleCI: Upgrade build pipeline tool (#24021)
* CircleCI: Upgrade build pipeline tool
* Devenv: ignore enterprise (#24037)
* Add header icon to Add data source page (#24033)
* latest.json: Update testing version (#24038)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
* Fix login page redirected from password reset (#24032)
* Storybook: Rewrite stories to CSF (#23989)
* ColorPicker to CSF format
* Convert stories to CSF
* Do not export ClipboardButton
* Update ConfirmButton
* Remove unused imports
* Fix feedback
* changelog enterprise 7.0.0-beta1 (#24039)
* CircleCI: Bump grafana/build-container revision (#24043)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
* Changelog: Updates changelog with more feature details (#24040)
* Changelog: Updates changelog with more feature details
* spell fix
* spell fix
* Updates
* Readme update
* Updates
* Select: fixes so component loses focus on selecting value or pressing outside of input. (#24008)
* changed the value container to a class component to get it to work with focus (maybe something with context?).
* added e2e tests to verify that the select focus is working as it should.
* fixed according to feedback.
* updated snapshot.
* Devenv: add remote renderer to grafana (#24050)
* NewPanelEditor: minor UI twekas (#24042)
* Forward ref for tabs, use html props
* Inspect: add inspect label to drawer title
* Add tooltips to sidebar pane tabs, copy changes
* Remove unused import
* Place tooltips over tabs
* Inspector: dont show transformations select if there is only one data frame
* Review
* Changelog: Add a breaking change (#24051)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
* CircleCI: Unpin grafana/docs-base (#24054)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
* Search: close overlay on Esc press (#24003)
* Search: Close on Esc
* Search: Increase bottom padding for the last item in section
* Search: Move closing search to keybindingsSrv
* Search: Fix folder view
* Search: Do not move folders if already in folder
* Docs: Adds deprecation notice to changelog and docs for scripted dashboards (#24060)
* Update CHANGELOG.md (#24047)
Fix typo
Co-authored-by: Daniel Lee <dan.limerick@gmail.com>
* Documentation: Alternative Team Sync Wording (#23960)
* Alternative wording for team sync docs
Signed-off-by: Joe Elliott <number101010@gmail.com>
* Update docs/sources/auth/team-sync.md
Co-Authored-By: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
* Fix misspell issues (#23905)
* Fix misspell issues
See,
$ golangci-lint run --timeout 10m --disable-all -E misspell ./...
Signed-off-by: Mario Trangoni <mjtrangoni@gmail.com>
* Fix codespell issues
See,
$ codespell -S './.git*' -L 'uint,thru,pres,unknwon,serie,referer,uptodate,durationm'
Signed-off-by: Mario Trangoni <mjtrangoni@gmail.com>
* ci please?
* non-empty commit - ci?
* Trigger build
Co-authored-by: bergquist <carl.bergquist@gmail.com>
Co-authored-by: Kyle Brandt <kyle@grafana.com>
* more tests
* remove FieldConfig setting
* merged binary and reduce
* improve tests
* update options after values change
* Minor refactoring and polish to UI
* Minor fixes
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
Co-authored-by: Marcus Andersson <marcus.andersson@grafana.com>
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
Co-authored-by: Ivana Huckova <30407135+ivanahuckova@users.noreply.github.com>
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
Co-authored-by: Dieter Plaetinck <dieter@grafana.com>
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
Co-authored-by: Emil Tullstedt <sakjur@gmail.com>
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
Co-authored-by: Jon Gyllenswärd <jon.gyllensward@grafana.com>
Co-authored-by: Andrej Ocenas <mr.ocenas@gmail.com>
Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>
Co-authored-by: Tobias Skarhed <1438972+tskarhed@users.noreply.github.com>
Co-authored-by: Leonard Gram <leo@xlson.com>
Co-authored-by: Alexander Zobnin <alexanderzobnin@gmail.com>
Co-authored-by: Richard Hartmann <RichiH@users.noreply.github.com>
Co-authored-by: Daniel Lee <dan.limerick@gmail.com>
Co-authored-by: Joe Elliott <joe.elliott@grafana.com>
Co-authored-by: Mario Trangoni <mario@mariotrangoni.de>
Co-authored-by: bergquist <carl.bergquist@gmail.com>
Co-authored-by: Kyle Brandt <kyle@grafana.com>
... in `componentDidUpdate`, not just `componentDidMount`.
Also unify query field behavior of Explore with Dashboard - when the
data source changes, it doesn't unmount but instead refreshes its
metrics.
Fixes#23162
* only show cache timeout if enabled in datasource
* move conditional
* Update public/app/features/dashboard/panel_editor/QueryOptions.tsx
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
* Moved templating.md
Moved file to a different folder, added alias information, updated menu.yaml
* Split out advanced variable format options from templating.md
* Reworked Advanced variable format options
* Update templating.md
* Moved global variables to another topic
* Moved template files
* Update global-variables.md
* Update global-variables.md
* Update templates-and-variables.md
* made new repeating panels and rows topic
* updated links and menu
* Update advanced-variable-format-options.md
* Update repeat-panels-or-rows.md
* Update menu.yaml
* Update prometheus.md
* Applied Daniel's edits
* Convert Spinner to CSF
* Convert TableInputCSV to CSF
* Convert ToggleButtonGroup to CSF
* Convert ValueMappingsEditor to CSF
* Convert useDelayedSwitch to CSF
* Convert ClipboardButton to CSF
* Convert CallToActionCard to CSF
* Convert BarGauge to CSF
* Convert DataSourceHttpSettings to CSF
* Convert ConfirmModal to CSF
* Convert FormField to CSF
* Convert Input to CSF
* Convert ButtonSelect to CSF
* Removed unused import from ButtonSelect story
* Convert InfoTooltip to CSF
* Convert List to CSF
* Convert QueryField to CSF
* Convert RefreshPicker to CSF
* Convert SecretFormField to CSF
* Convert ClipboardButton to CSF
* Convert CallToActionCard to CSF
* Convert BarGauge to CSF
* Convert DataSourceHttpSettings to CSF
* Convert ConfirmModal to CSF
* Convert FormField to CSF
* Fix: Show results of instant queries in Explore tables
* Add PreferredVisualisationType to meta
* Implement visualisation exception for Prometheus
* Implement visualisation exception for Elastic
* Search: Close on Esc
* Search: Increase bottom padding for the last item in section
* Search: Move closing search to keybindingsSrv
* Search: Fix folder view
* Search: Do not move folders if already in folder
* Forward ref for tabs, use html props
* Inspect: add inspect label to drawer title
* Add tooltips to sidebar pane tabs, copy changes
* Remove unused import
* Place tooltips over tabs
* Inspector: dont show transformations select if there is only one data frame
* Review
* changed the value container to a class component to get it to work with focus (maybe something with context?).
* added e2e tests to verify that the select focus is working as it should.
* fixed according to feedback.
* updated snapshot.
* updated the alerting tab.
* changed so we use a confirm button.
* removed uncommeneted import.
* Change to secondary buttons
Co-Authored-By: Dominik Prokop <dominik.prokop@grafana.com>
* trying to fix issue with panel of undefined.
* Fix prettier
* Update public/app/features/alerting/AlertTab.tsx
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
* Set min height of panel pane to 200px
* Disable badge on viz picker when item is in disabled in search results
* Fix UserProfile inputs width
* Remove select caret in user admin permissions editor
* fix 23911
If refresh interval is lower than minimum refresh interval
when importing dashboard, use the minimum refresh interval
instead of returning error.
Fixes#23099
* PanelEditor: fixes save/apply for undefined props in restoreModel
* Refactor: changes after PR comments
* Refactor: changes sourcePanel refresh strategy
* Added unit tests and minor refactoring of method, starting with cleanup, then setting properties from model
* Update public/app/features/dashboard/state/PanelModel.test.ts
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
* MaxDataPoints: Now enabled for all
* Updates to code and test
* Moved the panel query inspector
* PaneQueryRunner: Simplify logic and only take in maxDataPoints not width
* azuremonitor: add support for log analytics macros
Also adds tests for the kql macros
* azuremonitor: backend implementation for Log Analytics
* azuremonitor: remove gzip header from plugin route
The Go net/http library adds an accept encoding header
for gzip automatically.
https://golang.org/src/net/http/transport.go\#L2454
So no need to specify it manually
* azuremonitor: parses log analytics time series
* azuremonitor: support for table data for Log Analytics
* azuremonitor: for log analytics switch to calling the API...
...from the backend for time series and table queries.
* azuremonitor: fix missing err check
* azuremonitor: support Azure China, Azure Gov...
for log analytics on the backend.
* azuremonitor: review fixes
* azuremonitor: rename test files folder to testdata
To follow Go conventions for test data in tests
* azuremonitor: review fixes
* azuremonitor: better error message for http requests
* azuremonitor: fix for load workspaces on config page
* azuremonitor: strict null check fixes
Co-authored-by: bergquist <carl.bergquist@gmail.com>
* added moment timezone package.
* added a qnd way of selecting timezone.
* added a first draft to display how it can be used.
* fixed failing tests.
* made moment.local to be in utc when running tests.
* added tests to verify that the timeZone support works as expected.
* Fixed so we use the formatter in the graph context menu.
* changed so we will format d3 according to timeZone.
* changed from class base to function based for easier consumption.
* fixed so tests got green.
* renamed to make it shorter.
* fixed formatting in logRow.
* removed unused value.
* added time formatter to flot.
* fixed failing tests.
* changed so history will use the formatting with support for timezone.
* added todo.
* added so we append the correct abbrivation behind time.
* added time zone abbrevation in timepicker.
* adding timezone in rangeutil tool.
* will use timezone when formatting range.
* changed so we use new functions to format date so timezone is respected.
* wip - dashboard settings.
* changed so the time picker settings is in react.
* added force update.
* wip to get the react graph to work.
* fixed formatting and parsing on the timepicker.
* updated snap to be correct.
* fixed so we format values properly in time picker.
* make sure we pass timezone on all the proper places.
* fixed so we use correct timeZone in explore.
* fixed failing tests.
* fixed so we always parse from local to selected timezone.
* removed unused variable.
* reverted back.
* trying to fix issue with directive.
* fixed issue.
* fixed strict null errors.
* fixed so we still can select default.
* make sure we reads the time zone from getTimezone
* Fix storybook
* Add deprecated/alpha badge to panels in viz picker, fix long title display
* Move getFocusCss to mixins
* Updated hover/active state of vis picker item
* try fixing e2e
* Add removed label for e2e to be happy happy happy
* Datasource/Cloudwatch: Adds support for Cloudwatch Logs
* Fix rebase leftover
* Use jsurl for AWS url serialization
* WIP: Temporary workaround for CLIQ metrics
* Only allow up to 20 log groups to be selected
* WIP additional changes
* More changes based on feedback
* More changes based on PR feedback
* Fix strict null errors
* Resort Icon.story.tsx into Docs Overview category
* Make CallToActionCard.story.tsx internal
* Move ThemeColors to Docs Overview category
* Move Tag.story.tsx to Forms category
* Move TagList.story.tsx to Forms category
Co-authored-by: Clarity-89 <homes89@ukr.net>
Same as #23452 but for assumed roles.
When using service accounts (webIdentity) on EKS in combination
with assuming roles in other AWS accounts Grafana needs to retrieve
the service account credentials first and then needs to assume the
configured role.
* Explore: Create basic E2E test
* Feature: adds e2e tests for panel inspector
* Refactor: adds ts-ignore because of type checking errors
* Refactor: changes after PR comments and updates snapshot
* Refactor: adds typings back for IScope
* e2e: adds e2e for panel edit
Co-authored-by: Andreas Opferkuch <andreas.opferkuch@gmail.com>
When Include image is enabled for an alert notification channel, but there's
no image renderer available/installed when sending notification an error
image will be uploaded/attached explaining that you need to install the
Grafana Image Renderer plugin.
Ref #13802
Co-Authored-By: Arve Knudsen <arve.knudsen@gmail.com>
If no image renderer available/installed when adding a new alert notification
channel will set Include image to false per default, otherwise true as before.
If no image renderer available/installed when adding/edit alert notification
channel will show an informational message that you need to install the
Grafana Image Renderer plugin for Grafana to be able to render an image.
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* DataLink input to new form styles
* Make Angular work with inline editor
* Remove onRemove and desiableRemove
* Remove DataLinksEditor
* Change order of inputs
* Enable syntax highlight
* Fix datalinks for Elastic
* Explore: Create basic E2E test
* Feature: adds e2e tests for panel inspector
* Refactor: adds ts-ignore because of type checking errors
* Refactor: changes after PR comments and updates snapshot
* Refactor: adds typings back for IScope
* Refactor: changes after PR comments
Co-authored-by: Andreas Opferkuch <andreas.opferkuch@gmail.com>
* NewPanelEditor: Panel edit tweaks (#22415)
* NewPanelEditor: Alternative edit layout
* Fixed full height issue
* panel-edit-tabs experiment
* minor tweaks
* PanelEditor: Minor tweaks
* Docs: URL update to Relref to repair broken links
Rewrote URL references in the text for the Administration guide
and older Whats New page to repair broken links, and change
to the Relref format to build the website with Hugo.
Closes#22378
* Remove stale file, caught in this
branch and PR from my Fork. contribute/style-guides/markdown-style-guide.md
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* Fixes and security patches:
1. Always keep the source directory, just don't package the source
2. Do not publish the SSH key for common plugin tasks.
Changed to environment variable
* env variable renamed.
* Re-added the src remove
* touch config.yml for rebuild
* show signing status
* show signing status
* Progress on signed badge style
* Progress on signing status look and updated card background
* Updates
* Transforms card tweak
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
* Create .mdx for ColorPicker component group
Describes the building blocks of the component and how they work together.
* Rename ColorPicker.mdx to ColorPicker.story.mdx
* Update packages/grafana-ui/src/components/ColorPicker/ColorPicker.story.mdx
Clean up tags
Co-Authored-By: Tobias Skarhed <1438972+tskarhed@users.noreply.github.com>
* Update packages/grafana-ui/src/components/ColorPicker/ColorPicker.story.mdx
Co-Authored-By: Tobias Skarhed <1438972+tskarhed@users.noreply.github.com>
Co-authored-by: Tobias Skarhed <1438972+tskarhed@users.noreply.github.com>
* Transformers: adds labels as columns transformer
* Refactor: adds support for same timestamps with different labels
* Refactor: adds basic transform ui
* Refactor: adds sorted result
* Refactor: renames transformer
* clear dashboard on unmount
* fix menu z-index, folderpicker width
* fix issue with saving dashboard in another folder
* use foldermodel instead of selectablevalue
* using z-index from theme
* updated names
* update snapshot
* remove size from folderpicker
* use connectWithCleanup
* update snapshot
grafana-plugin-model is legacy and is replaced by new backend
plugins SDK and architecture. Renderer is not part of SDK and
we want to keep it that way for now since it's highly unlikely there
will be more than one kind of renderer plugin.
So this PR adds support for renderer plugin v2.
Also adds support sending a Device Scale Factor parameter to the
plugin v2 remote rendering service and by that replaces #22474.
Adds support sending a Headers parameter to the plugin v2 and
remote rendering service which for now only include
Accect-Language header (the user locale in browser when using
Grafana), ref grafana/grafana-image-renderer#45.
Fixes health check json details response.
Adds image renderer plugin configuration settings in defaults.ini
and sample.ini.
Co-Authored-By: Arve Knudsen <arve.knudsen@gmail.com>
* Search: Toggle Search based on search query
* Search: Fix types and closed search param
* Search: Remove appEvents from SearchWrapper
* Search: Reset folder on close
Co-Authored-By: Alexander Zobnin <alexanderzobnin@gmail.com>
* Search: Disable reloadOnSearch for manage dashboards urls
Co-authored-by: Alexander Zobnin <alexanderzobnin@gmail.com>
* Table: Fixed to column alignment
* testing table state reducer
* Styles starting to work
* Persisting column resize now works
* Trying to fix Table storybook stories
* Minor updates
* fixed ts issue
* Table: Support duplicate field names, and use data frame directly instead of copying data and other improvements (#23681)
* Poc at use data frame directly
* working ok
* Table improvements
* Move xss and sanitize packages to grafana-data
* Move text, url and location utils to grafana-data
* Move grafana config types to grafana-data
* Move field display value proxy to grafana-data
* Fix
* Move data links built in vars to grafana-data
* Attach links supplier to when applying field overrides
* Prep tests
* Use links suppliers attached via field overrides
* locationUtil dependencies type
* Move sanitize-url declaration to grafana-data
* Revert "Move sanitize-url declaration to grafana-data"
This reverts commit 11db9f5e55.
* Fix typo
* fix ts vol1
* Remove import from runtime in data.... Make TS happy at the same time ;)
* Lovely TS, please shut up
* Lovely TS, please shut up vol2
* fix tests
* Fixes
* minor refactor
* Attach get links to FieldDisplayValue for seamless usage
* Update packages/grafana-data/src/field/fieldOverrides.ts
* Make storybook build
* Tweaks and comments for ci-improvements, stability, and readibility
- Made naming more obvious and intuitive
- CI supports grafana e2e plus more granular design
(side effect that it takes slightly longer, but negligable)
- disable strict e2e errors through environment variable
- Added tools for linting and for building plugin-ci
* feedback from stevev - remove version. Causes problems
* Because alpine uses musl instead of libc, the e2e/cypress was not compatible
So:
- Created new VM based on debian-slim
- Could also be used as a build VM
Fixes:
- ginstall issue with merge somewhere.
- Trimmed down the alpine VM since we don't need the extra libraries for cypress
* Fix: Don't need cp on debian
Fix: Don't use /bin/sh on debian. Only for alpine. Use /bin/bash on debian
Fix: Missing dependencies to e2e tests
* WIP: Inspect transformers
* Updated
* Transformations working in inspect drawer and series to columns working as normal transformation
* Minor name change
* Updated
* Updated
* Fix: fixes crash with dataFrameIndex out of bounds
Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>
* add a table picker
* move picker to the top
* add missing change
* Removed overflow from panel-content so dropdown menus can extend a panel, moved the select to the bottom
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
So:
- Created new VM based on debian-slim
- Could also be used as a build VM
Fixes:
- ginstall issue with merge somewhere.
- Trimmed down the alpine VM since we don't need the extra libraries for cypress
Removes all references and usage of PhantomJS #23375.
Remove direct link rendered image e2e smoke test for now.
Docker: Fix installing chrome in ubuntu custom docker image.
Improve handling of image renderer not available/installed #23593.
Add PhantomJS breaking change and upgrading notes.
Use grabpl v0.2.10.
Closes#13802
Co-authored-by: Kyle Brandt <kyle@grafana.com>
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
The last three sections of this document are not rendered on https://grafana.com/docs/grafana/latest/alerting/notifications
It seems like in all other instances (other .md docs of this project), level one headers are only used at the top of the page, so I assume using level two headers will make them show. Level two headers do also match the overall structure of the documentation.
* move Panel JSON to inspector
* move Panel JSON to inspector
* update test
* use stats display options
* move query inspector to inspector
* open inspector from the queries section
* subscribe to results
* subscribe to results
* open the right tab
* apply review feedback
* update menus (inspect tabs)
* Dashboard: extend dashnav to add custom content (#23433)
* Dashlist: Fixed dashlist broken in edit mode (#23426)
* Chore: Fix bunch of strict null error to fix master CI (#23443)
* Fix bunch of null error
* Fix failing test
* Another test fix
* Docs: Add SQL region annotation examples (#23268)
Add region annotation examples for SQL data sources in docs.
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
* Docs: Update contributing doc to install node@12. (#23450)
* NewPanelEdit: Minor style and description tweaks, AND PanelQueryRunner & autoMinMax (#23445)
* NewPanelEdit: Minor style and description tweaks
* Removed the worst snapshot of all time
* ReactTable: adds color text to field options (#23427)
* Feature: adds text color field config
* Refactor: created an extension point
* Refactor: uses HOC for extension instead
* Fix: fixes background styling from affecting cells without display.color
* Chore: export OptionsUIRegistryBuilder on grafana/data (#23444)
* export the ui registry
* add to utils index also
* DataLinks: Do not full page reload data links links (#23429)
* Templating: Fix global variable "__org.id" (#23362)
* Fixed global variable __org.id value
* correct orgId value
* reverted the change as variables moved to new file
* Chore: reduce null check errors to 788 (currently over 798) (#23449)
* Fixed ts errors so build will succeed
* Update packages/grafana-data/src/types/graph.ts
Co-Authored-By: Ryan McKinley <ryantxu@gmail.com>
* Feedback from code review
* Leaving out trivial typing's
* Fix error with color being undefined now.
* fix test with timezone issue
* Fixed test
Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
* Cloudwatch: prefer webIdentity over EC2 role (#23452)
* Plugins: add a signature status flag (#23420)
* Progress
* fixed button
* Final touches
* now works from edit mode
* fix layout
* show raw objects
* move query inspector buttons to the bottom
* update snapshot
* Updated design
* Made full page reload work
* Fixed minor style issue
* Updated
* More fixes
* Removed unused imports
* Updated
* Moved to data tab out to seperate component
* fixed ts issue
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
Co-authored-by: Agnès Toulet <35176601+AgnesToulet@users.noreply.github.com>
Co-authored-by: Andrej Ocenas <mr.ocenas@gmail.com>
Co-authored-by: Alexandre de Verteuil <alexandre@grafana.com>
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
Co-authored-by: Cyril Tovena <cyril.tovena@gmail.com>
Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>
Co-authored-by: Vikky Omkar <vikkyomkar@gmail.com>
Co-authored-by: Stephanie Closson <srclosson@gmail.com>
Co-authored-by: Dário Nascimento <dfrnascimento@gmail.com>
* Add integration with Jeager
Add Jaeger datasource and modify derived fields in loki to allow for opening a trace in Jager in separate split.
Modifies build so that this branch docker images are pushed to docker hub
Add a traceui dir with docker-compose and provision files for demoing.:wq
* Enable docker logger plugin to send logs to loki
* Add placeholder zipkin datasource
* Fixed rebase issues, added enhanceDataFrame to non-legacy code path
* Trace selector for jaeger query field
* Fix logs default mode for Loki
* Fix loading jaeger query field services on split
* Updated grafana image in traceui/compose file
* Fix prettier error
* Hide behind feature flag, clean up unused code.
* Fix tests
* Fix tests
* Cleanup code and review feedback
* Remove traceui directory
* Remove circle build changes
* Fix feature toggles object
* Fix merge issues
* Add trace ui in Explore
* WIP
* WIP
* WIP
* Make jaeger datasource return trace data instead of link
* Allow js in jest tests
* Return data from Jaeger datasource
* Take yarn.lock from master
* Fix missing component
* Update yarn lock
* Fix some ts and lint errors
* Fix merge
* Fix type errors
* Make tests pass again
* Add tests
* Fix es5 compatibility
* Add header with minimap
* Fix sizing issue due to column resizer handle
* Fix issues with sizing, search functionality, duplicate react, tests
* Refactor TraceView component, fix tests
* Fix type errors
* Add dark theme styling
* Add tests for hooks
* More color changes
* Fix tests to deal with additional theme wrappers.
* Add memoization
* Fix duplicate identifier
Co-authored-by: David Kaltschmidt <david.kaltschmidt@gmail.com>
* Allow API to assign new user to a specific organization
* Add defer block to test
* Add API tests and return 400 instead of 500 for bad orgId
* Minor test improvements
* Fixed so we dont miss the deep default options.
* removed console log.
* remove check of feature toggle and assuming that the new variables are the default ones.
* removed e2e statement about used featuretoggles.
* added comments for the angular loader.
* added code documentation for backendSrv.
* docs for datasource_srv.
* added some more docs.
* added documentation for the locationsrv.
* started to add docs for echo srv.
* added docs for meta srv.2
* added docs for analytics.
* draft documentation of the DataSourceWithBackend.
* added docs for last files.
* fixed all warnigns in api-extractor.
* fixed some typos and captializations.
* replaced run
* consolidated dist and toolkit
* Solved a few more issues
1. Need to explicitly copy circleci config to dist
so that it's published
2. Detect build directory, and use "local" or "linked"
mode for local builds.
* Reverted change used only for testing
* grafana-toolkit.js always required now. Copy to dist
* removed grafana-toolkit.dist.js, no longer required
* feedback from code review
* Code review comments 2.
Enables adding a section `plugin.<plugin id>` and key/value to
Grafana configuration file which will be converted and sent
as environment variables to the backend plugin.
Also sends some additional environment variables, Grafana
version (GF_VERSION), Grafana edition (GF_EDITION) and
enterprise license path (GF_ENTERPRISE_LICENSE_PATH).
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
Fixes#21515,
* Hangouts: fixes notifications for alerts with empty message
* Update pkg/services/alerting/notifiers/googlechat.go
Co-Authored-By: Marcus Efraimsson <marcus.efraimsson@gmail.com>
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
* Add integration with Jeager
Add Jaeger datasource and modify derived fields in loki to allow for opening a trace in Jager in separate split.
Modifies build so that this branch docker images are pushed to docker hub
Add a traceui dir with docker-compose and provision files for demoing.:wq
* Enable docker logger plugin to send logs to loki
* Add placeholder zipkin datasource
* Fixed rebase issues, added enhanceDataFrame to non-legacy code path
* Trace selector for jaeger query field
* Fix logs default mode for Loki
* Fix loading jaeger query field services on split
* Updated grafana image in traceui/compose file
* Fix prettier error
* Hide behind feature flag, clean up unused code.
* Fix tests
* Fix tests
* Cleanup code and review feedback
* Remove traceui directory
* Remove circle build changes
* Fix feature toggles object
* Fix merge issues
* Add trace ui in Explore
* WIP
* WIP
* WIP
* Make jaeger datasource return trace data instead of link
* Allow js in jest tests
* Return data from Jaeger datasource
* Take yarn.lock from master
* Fix missing component
* Update yarn lock
* Fix some ts and lint errors
* Fix merge
* Fix type errors
* Make tests pass again
* Add tests
* Fix es5 compatibility
* Add header with minimap
* Fix sizing issue due to column resizer handle
* Fix issues with sizing, search functionality, duplicate react, tests
* Refactor TraceView component, fix tests
* Fix type errors
* Add dark theme styling
* Add tests for hooks
* More color changes
* Fix tests to deal with additional theme wrappers.
Co-authored-by: David Kaltschmidt <david.kaltschmidt@gmail.com>
* Toolkit: Update plugin added
- To normalize an bring a plugins "managed" config up to date
* Added changes for filter only release
* changed name
* updated test for checking files in manifest
* New alpine based plugin ci image
- smaller, based on alpine (downloads in 7 to 10 seconds)
- Has updated gget that uses tar.gz
- Unpacks to /opt/grafana
- Compatible cp with toolkit
* needed build tools for go lint
* added built vm to test tool
* add circleci plugin config
* added openssh to image
* fix for gget & renamed to ginstall
* Styles: Refactoring and tweaks to inline form styles
* Minor change
* Minor fix
* Updated snapshot
* tweaks
* minor tweak
* Updated modal style
* Updated snapshot
* Updated more snapshots
* IconButton: New component to share pointer, size & hover style for icon buttons
* Progress
* IconButton: new component
* Think I am done
* Updated snapshots
* Do not like the black button reverting that, and not the plus-circle changed to plus
* fixed test
* fixed e2e test
* Fixed ts issue
* Use single registry for transformations
* Fix transformations tests
* Added documentation comments and minor refactor
* Added documentation comments and minor refactor
Minor misunderstanding between me and Typescript. We should be good friends back now.
* Fix registry import
* Redux: Added config to redux development middlewares that checks for mutations and serializability
* Disable these middlewares, they are too slow
* Update public/app/store/configureStore.ts
* Update public/app/store/configureStore.ts
* Prettier fix
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
* Do not use pointer cursor on icon by default
* Allow items alignment in the HorizontalGroup layout
* Add util for rendering components based on their type (element or function)
* Components for rendering query and transformation rows in a unified way
* Apply new UI fo query and transformation rows
* Add some tests
* Minor fix for scroll area
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
* First bar gauge panel option
* Update doc comments
* Minor changes
* progress
* Minor type updates
* Fixing typing errors
* Fix that TS!
* Bring satisfaction to that beast called typescript
* Prototype
* Remove import
* Experimenting with different named categories
* Experimenting with category naming
* Naming is very hard
* merge master
* Remove commented code
* Fix merge
* Categorise panel options into collapsible sections
* Remove categories from table panel
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
* Fixed ts errors so build will succeed
* Update packages/grafana-data/src/types/graph.ts
Co-Authored-By: Ryan McKinley <ryantxu@gmail.com>
* Feedback from code review
* Leaving out trivial typing's
* Fix error with color being undefined now.
* fix test with timezone issue
* Fixed test
Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
* Feature: adds text color field config
* Refactor: created an extension point
* Refactor: uses HOC for extension instead
* Fix: fixes background styling from affecting cells without display.color
* Remove deprecated setDefault usages
* Add simple support for conditinal field config properties
* Use new API in NewsPanel
* Update tests
* Fix check
* Add integration with Jeager
Add Jaeger datasource and modify derived fields in loki to allow for opening a trace in Jager in separate split.
Modifies build so that this branch docker images are pushed to docker hub
Add a traceui dir with docker-compose and provision files for demoing.:wq
* Enable docker logger plugin to send logs to loki
* Add placeholder zipkin datasource
* Fixed rebase issues, added enhanceDataFrame to non-legacy code path
* Trace selector for jaeger query field
* Fix logs default mode for Loki
* Fix loading jaeger query field services on split
* Updated grafana image in traceui/compose file
* Fix prettier error
* Hide behind feature flag, clean up unused code.
* Fix tests
* Fix tests
* Cleanup code and review feedback
* Remove traceui directory
* Remove circle build changes
* Fix feature toggles object
* Fix merge issues
* Add trace ui in Explore
* WIP
* WIP
* WIP
* Make jaeger datasource return trace data instead of link
* Allow js in jest tests
* Return data from Jaeger datasource
* Take yarn.lock from master
* Fix missing component
* Update yarn lock
* Fix some ts and lint errors
* Fix merge
* Fix type errors
* Make tests pass again
* Add tests
* Fix es5 compatibility
* Add header with minimap
* Fix sizing issue due to column resizer handle
* Fix issues with sizing, search functionality, duplicate react, tests
* Refactor TraceView component, fix tests
* Fix type errors
* Add tests for hooks
Co-authored-by: David Kaltschmidt <david.kaltschmidt@gmail.com>
* Replicate SDK behaviour for WebIdentityRole
Fix#20473
* Use WebIdentityRole in s3 uploader as well
* Use consistent casing
* use WebIdentityRole to assume another role
Co-authored-by: eV <ev@7pr.xyz>
* Part1: Unicons implementation (#23197)
* Create a new Icon component
* Update icons in main sidebar
* Update icons in Useful links and in react components on main site
* Update icons in Useful links and in main top navigation
* Adjust sizing
* Update panel navigation and timepicker
* Update icons in Panel menu
* NewPanelEditor: Fixed so that test alert rule works in new edit mode (#23179)
* Update icons in add panel widget
* Resolve merge conflict
* Fix part of the test errors and type errors
* Fix storybook errors
* Update getAvailableIcons import in storybook knobs
* Fix import path
* Fix SyntaxError: Cannot use import statement outside a module in test environment error
* Remove dynamic imports
* Remove types as using @ts-ignore
* Update snapshot test
* Add @iconscout/react-unicons to the shouldExclude list as it is blundled with es2015 syntax
* Remove color prop from icon, remove color implemetation in mono icons
* Update navbar styling
* Move toPascalCase to utils/string
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
* Resolve type errors resulted from merge
* Part2: Unicons implementation (#23266)
* Create a new Icon component
* Update icons in main sidebar
* Update icons in Useful links and in react components on main site
* Update icons in Useful links and in main top navigation
* Adjust sizing
* Update panel navigation and timepicker
* Update icons in Panel menu
* Update icons in add panel widget
* Resolve merge conflict
* Fix part of the test errors and type errors
* Fix storybook errors
* Update getAvailableIcons import in storybook knobs
* Fix import path
* Fix SyntaxError: Cannot use import statement outside a module in test environment error
* Remove dynamic imports
* Remove types as using @ts-ignore
* Update snapshot test
* Add @iconscout/react-unicons to the shouldExclude list as it is blundled with es2015 syntax
* Implment icons in Tabs
* Implement icons in search items and empty list
* Update buttons
* Update button-related snapshot tests
* Update icons in modals and page headers
* Create anfular wrapper and update all icons on search screen
* Update sizing, remove colors, update snapshot tests
* Remove color prop from icon, remove color implemetation in mono icons
* Remove color props from monochrome icons
* Complete update of icons for search screen
* Update icons for infor tooltips, playlist, permissions
* Support temporarly font awesome icons used in enterprise grafana
* Part1: Unicons implementation (#23197)
* Create a new Icon component
* Update icons in main sidebar
* Update icons in Useful links and in react components on main site
* Update icons in Useful links and in main top navigation
* Adjust sizing
* Update panel navigation and timepicker
* Update icons in Panel menu
* NewPanelEditor: Fixed so that test alert rule works in new edit mode (#23179)
* Update icons in add panel widget
* Resolve merge conflict
* Fix part of the test errors and type errors
* Fix storybook errors
* Update getAvailableIcons import in storybook knobs
* Fix import path
* Fix SyntaxError: Cannot use import statement outside a module in test environment error
* Remove dynamic imports
* Remove types as using @ts-ignore
* Update snapshot test
* Add @iconscout/react-unicons to the shouldExclude list as it is blundled with es2015 syntax
* Remove color prop from icon, remove color implemetation in mono icons
* Update navbar styling
* Move toPascalCase to utils/string
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
* Icons update
* Add optional chaining to for isFontAwesome variable
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
* Part3: Unicons implementation (#23356)
* Create a new Icon component
* Update icons in main sidebar
* Update icons in Useful links and in react components on main site
* Update icons in Useful links and in main top navigation
* Adjust sizing
* Update panel navigation and timepicker
* Update icons in Panel menu
* Update icons in add panel widget
* Resolve merge conflict
* Fix part of the test errors and type errors
* Fix storybook errors
* Update getAvailableIcons import in storybook knobs
* Fix import path
* Fix SyntaxError: Cannot use import statement outside a module in test environment error
* Remove dynamic imports
* Remove types as using @ts-ignore
* Update snapshot test
* Add @iconscout/react-unicons to the shouldExclude list as it is blundled with es2015 syntax
* Implment icons in Tabs
* Implement icons in search items and empty list
* Update buttons
* Update button-related snapshot tests
* Update icons in modals and page headers
* Create anfular wrapper and update all icons on search screen
* Update sizing, remove colors, update snapshot tests
* Remove color prop from icon, remove color implemetation in mono icons
* Remove color props from monochrome icons
* Complete update of icons for search screen
* Update icons for infor tooltips, playlist, permissions
* Support temporarly font awesome icons used in enterprise grafana
* Part1: Unicons implementation (#23197)
* Create a new Icon component
* Update icons in main sidebar
* Update icons in Useful links and in react components on main site
* Update icons in Useful links and in main top navigation
* Adjust sizing
* Update panel navigation and timepicker
* Update icons in Panel menu
* NewPanelEditor: Fixed so that test alert rule works in new edit mode (#23179)
* Update icons in add panel widget
* Resolve merge conflict
* Fix part of the test errors and type errors
* Fix storybook errors
* Update getAvailableIcons import in storybook knobs
* Fix import path
* Fix SyntaxError: Cannot use import statement outside a module in test environment error
* Remove dynamic imports
* Remove types as using @ts-ignore
* Update snapshot test
* Add @iconscout/react-unicons to the shouldExclude list as it is blundled with es2015 syntax
* Remove color prop from icon, remove color implemetation in mono icons
* Update navbar styling
* Move toPascalCase to utils/string
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
* Update icons in Explore
* Update icons in alerting
* Update + and x buttons
* Update icons in configurations and settings
* Update close icons
* Update icons in rich history
* Update alert messages
* Add optional chaining to for isFontAwesome variable
* Remove icon mock, set up jest.config
* Fix navbar plus icon
* Fir enable-bacground to enableBackgournd
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
* Merge remote branch origin master to icons-unicons
* Revert "Merge remote branch origin master to icons-unicons"
This reverts commit 3f25d50a39.
* Size-up dashnav icons
* Fix alerting icons, panel headers, update tests
* Fix typecheck error
* Adjustments - add panel icon, spacing
* Set TerserPlugin sourceMap to false to prevent running out of memory when publishing storybook
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
* Chore: Upgrade to Go 1.14
* Chore: Bump version of grafana/grafana-ci-deploy Docker image
* Chore: Fix/bump version of grafana/build-container Docker image
* CircleCI: Upgrade build Docker images
* BackendPlugin: (wip) change response format
goes with https://github.com/grafana/grafana-plugin-sdk-go/pull/109
* fix error mapping in wrapper
* latest of my sdk branch
* latest of my sdk branch
* TransformWrapper fixes
* latest of sdk branch (removes extra meta)
* add metadata in wrappers
* also set error string
* sdk: v0.35.0
The fetch() API won't send cookies or other type of credentials unless
you set the credentials init option. Some datasources like Prometheus
and Elasticsearch have `withCredentials` option in Browser access mode,
but this option is not currently getting passed in the fetch() API.
Fixes#23338.
* Refactor: adds one form of column resize to React-Table
* Refactor: resizing works
* Refactor: adds onColumnResize
* Refactor: fixes so sorting is not invoked when resizing
* Refactor: fixes styles for resizer
* Refactor: removes callback call
* Refactor: changes after comments
* Refactor: updates code according to new api
* Improved styling
* fix
* Refactor: adds back resizable panel option and defaults to false
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
* Set field config defaults based on config registry
* Rename FIeldPropertyEditorItem to FieldConfigPopertyItem
* Remove console.log
* Simplify overrides persistence model and add support for nested properties in overrides
* Review updates
* Added draft on transformers to sort and hide fields.
* added structure for the UI.
* draft on sorting/filtering UI.
* simplified the datastructure a bit.
* added draft on drag and drop support.
* added some super simple styling. Nothing final still waiting for a proper design on this.
* updated lockfile after merge.
* changed so we use the new path for button.
* added one more test.
* Ignore feature toggle
* Moved editor to app
* Added top description
* Minor update
* Did some renaming and simplified the code a bit.
* fixed so we dont use capital naming on the transformer.
* changed to an vertical drag and drop design.
* added support to rename fields.
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
1. Typo in the default email address
2. Nested promises causing problems in some situations. Return a promise
and resolve in the outer function
3. If extension still have '.' in front remove it prior to matching.
* Lessons learned from using circle-ci
1. Make it clearer that GITHUB_TOKEN or GITHUB_ACCESS_TOKEN
are required for a release. Don't build without them.
2. Default gracefully to an reasonable email address.
(It does not have to actually exist, but the api needs it to publish)
* template for testing
* Wrote a basic test.
* Simple test
* Slight fix to brackets
* Code review changes
* Fix for test. Setup environment properly
* FieldConfig: Unifying standard and custom registry
* Adding path to option items to make id be prefixed for custom options
* Code updates progress
* Add docs back
* Fix TS
* ld overrides tests from ui to data
* Refactor - rename
* Gauge and table cleanup
* F-I-X e2e
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
* Show organization popup in alphabetical order
* GetUserOrgList: Sort organizations by name in API
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* Theme: Updates old gf-form-styles
* Removed margin buttom
* updated
* updated
* This will take some time
* More style tweaks to both light and dark theme
* Minor change
* Tweaked table styles
* use dropdown
* keep padding the same
* keep padding the same
* Refactoring and moving to components
* Updated
* Alt names
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
* FieldOverride: Fixed number override so that it return undefined for null/undefined values and not NaN
* Made process function be able to return undefined an null
* POC grid layout of gague.
* added a grid property that can be used to auto size the charts within a panel.
* fill the grid
* fix lint
* change default for stat panel
* avoid empty cells
* Moved to absolute positioning
* Fixed spacing
* Another fix
* Improve layout algorithm
* VizRepeater: Reverted back to so this is auto behavior for some panels
Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
* Variables: turns on newVariables as default
* Chore: adds default templating state
* Some small refactorings to get the template_srv tests to get green when toggle is enabled by default.
* Refactor: adds getVariables dependency to DashboardModel
* Tests: fixes StackDriver tests
* Tests: updates snapshots
* Tests: updates snapshot for DashboardGrid.test.tsx
* Tests: fixes DashboardModel.test.ts
* fixed initDashboard tests.
* renamed variable.
* changed so we use the templating.list when running the migration work.
* changed so we always returns the variables in sorted order.
* Tests: fixed cloudwatch tests
* added so we set the global template variable props.
* Fixed tests and added moved logic to complete templateSrv variables.
* removed unneccesary updateIndex.
Co-authored-by: Marcus Andersson <marcus.andersson@grafana.com>
* removing src dir on publish
* Moved from binary to native typescript
1. Moved to a native typescrpt github publish using the existing
github client.
2. Change dist.js to detect running in a linked environment.
Todo: Optimize docker image for build size.
* Optimized build of docker container
Much smaller. From 5.47 gb to 2.88
* Feedback from discussion with Ryan
- Added gget for getting grafana versions
- Added infrastructure for testing
- Uploaded new docker image
* Fixed typo... Not sure what happened there :)
* Added command to download canary
* small fix for displaying versions in help
* Removed --dev option
Should really just rename version to (ex: 1.2.0-dev)
* removing src dir on publish
* Moved from binary to native typescript
1. Moved to a native typescrpt github publish using the existing
github client.
2. Change dist.js to detect running in a linked environment.
Todo: Optimize docker image for build size.
* Optimized build of docker container
Much smaller. From 5.47 gb to 2.88
* Feedback from discussion with Ryan
- Added gget for getting grafana versions
- Added infrastructure for testing
- Uploaded new docker image
* Fixed typo... Not sure what happened there :)
* Added command to download canary
* small fix for displaying versions in help
* Removed --dev option
Should really just rename version to (ex: 1.2.0-dev)
* Utils: Use 's' as default for unit-less intervals
If the user specifies a string that is a unit-less number, it is
assumed that they meant seconds.
Fixes#22362
* Rephrase tooltip for better line break position
* Add integration with Jeager
Add Jaeger datasource and modify derived fields in loki to allow for opening a trace in Jager in separate split.
Modifies build so that this branch docker images are pushed to docker hub
Add a traceui dir with docker-compose and provision files for demoing.:wq
* Enable docker logger plugin to send logs to loki
* Add placeholder zipkin datasource
* Fixed rebase issues, added enhanceDataFrame to non-legacy code path
* Trace selector for jaeger query field
* Fix logs default mode for Loki
* Fix loading jaeger query field services on split
* Updated grafana image in traceui/compose file
* Fix prettier error
* Hide behind feature flag, clean up unused code.
* Fix tests
* Fix tests
* Cleanup code and review feedback
* Remove traceui directory
* Remove circle build changes
* Fix feature toggles object
* Fix merge issues
* Add trace ui in Explore
* WIP
* WIP
* WIP
* Make jaeger datasource return trace data instead of link
* Allow js in jest tests
* Return data from Jaeger datasource
* Take yarn.lock from master
* Fix missing component
* Update yarn lock
* Fix some ts and lint errors
* Fix merge
* Fix type errors
* Make tests pass again
* Add tests
* Fix es5 compatibility
Co-authored-by: David Kaltschmidt <david.kaltschmidt@gmail.com>
* Changed location for Current Org:
Current Org: was below the current Org, I changed it so you can deside what looks correct.
I also put an "." after Org, since it is a shorting
* removed an empty line
* Update snapshot
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
* Export other components as Legacy
* More Select Legacy
* Add namespacing to more files
* Export new elements
* Move Legacy Select folder
* Let's not forget the scss file
* Move new Select folder
* Move new Select from Forms namespace
* Little oopsie
* Fix errors
* Fix merge issues
* Fixed issue with multi value.
* Made some refactorings after feedback from Torkel and Hugo.
* minor refactorings.
* changed so we don't make the current value to array if multi is false.
* added snapshot to contain v23.
* Fixed so we always use the correct type when setting value for multi/non-multi.
* added some more tests.
* added tests.
* some small adjustments after feedback
* Forms for UserProfile
* Migrate to new Form styles
* Add remove icon
* Remove unused import
* Update public/app/features/admin/UserOrgs.tsx
* Remove comment
* Remove icon and add text
* Make every ButtonGroup unique - regardless of values
* Remove visual glitch etc.
* Fic failing typecheck
* Add "some" typesafety to panel options/field config APIs
* Allow selected common field config properties config, allow option defaults config via fluent API
* Update packages/grafana-data/src/panel/PanelPlugin.ts
Co-Authored-By: Ryan McKinley <ryantxu@gmail.com>
* Add defaults support for custom field config
* Enable defaults setting for standard and custom field configs
* Remove setFieldConfigDefaults from PanelPlugin API and replace it with useStandardFieldConfig
* Update API for standard field config defaults
Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
* first things
* introduce headers and moving buttons
* adding reducer and action for gcom dashboard
* action working
* continue building on import form
* change dashboard title
* add prop to not render a label
* first things
* introduce headers and moving buttons
* adding reducer and action for gcom dashboard
* action working
* continue building on import form
* change dashboard title
* add prop to not render a label
* import form layout
* break out form to component
* add actions and reader for file upload
* fix upload issue
* modified data types to handle both gcom and file upload
* import dashboard json
* save dashboard
* start change uid
* change dashboard uid
* fix spacing and date format
* fix import from json
* handle uid and title change
* revert change in panelinspect
* redo fileupload component
* after review
* redo forms to use Forms functionality
* first attempt on async validation
* use ternary on uid input
* removed unused actions, fixed async validation on form
* post form if invalid, break out form to component
* sync file with master
* fix after merge
* nits
* export formapi type
* redo page to use forms validation
* fix inputs and validation
* readd post
* add guards on data source and constants
* type checks and strict nulls
* strict nulls
* validate onchange and fix import button when valid
* shorten validate call
* reexport OnSubmit type
* add comment for overwrite useEffect
* move validation functions to util
* fix button imports
* remove angular import
* move title and uid validation
* Text change
made it more understandable that this is a search field
* Made "New Folder"-button green
Since New Dashboard was green I thought New Folder; Import also would be green. Green seems to be the color for creating new items
* Update playlist_search.html
* change search text
* wrong link
* Update playlist.md
* Update manage_dashboards.html
* Update manage_dashboards.html
* replaced Filter
* replaced Filter
* replaced Filter
* replaced filter
* changed text for placeholder
* Update UsersActionBar.tsx
* Update UserListAdminPage.tsx
* update snapshots
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
* Cookie : Increase duration to avoid error
When using oauth2 authentication with multifactor, the 60s delay may be too short
* Introduce new setting for OAuth state cookie max age
Co-authored-by: Sofia Papagiannaki <sofia@grafana.com>
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* Refactor: adds first naive implemenation of join by field name
* Chore: changes after PR comments
* Refactor: fixes labels and adds support for multiple columns
* StatPanels: Refactoring DisplayValueOptions and renaming
* added return
* Progress
* Updated
* Made radio groups full width by default in panel options
* Fixed ts issue
* Updated
* Added remaining options
* Removed unused type
* Updated snapshot
* Renamed to ReduceDataOptions
* First bar gauge panel option
* Update doc comments
* Minor changes
* progress
* Fixing typing errors
* Minor type updates
* Fix that TS!
* Bring satisfaction to that beast called typescript
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
* wip: add slo support
* Export DataSourcePlugin
* wip: break out metric query editor into its own component
* wip: refactor frontend - keep SLO and Metric query in differnt objects
* wip - load services and slos
* Fix broken test
* Add interactive slo expression builder
* Change order of dropdowns
* Refactoring backend model. slo unit testing in progress
* Unit test migration and SLOs
* Cleanup SLO editor
* Simplify alias by component
* Support alias by for slos
* Support slos in variable queries
* Fix broken last query error
* Update Help section to include SLO aliases
* streamline datasource resource cache
* Break out api specific stuff in datasource to its own file
* Move get projects call to frontend
* Refactor api caching
* Unit test api service
* Fix lint go issue
* Fix typescript strict errors
* Fix test datasource
* Use budget fraction selector instead of budget
* Reset SLO when service is changed
* Handle error in case resource call returned no data
* Show real SLI display name
* Use unsafe prefix on will mount hook
* Store goal in query model since it will be used as soon as graph panel supports adding a threshold
* Add comment to describe why componentWillMount is used
* Interpolate sloid
* Break out SLO aggregation into its own func
* Also test group bys for metricquery test
* Remove not used type fields
* Remove annoying stackdriver prefix from error message
* Default view param to FULL
* Add part about SLO query builder in docs
* Use new images
* Fixes after feedback
* Add one more group by test
* Make stackdriver types internal
* Update docs/sources/features/datasources/stackdriver.md
Co-Authored-By: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
* Update docs/sources/features/datasources/stackdriver.md
Co-Authored-By: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
* Update docs/sources/features/datasources/stackdriver.md
Co-Authored-By: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
* Updates after PR feedback
* add test for when no alias by defined
* fix infinite loop when newVariables feature flag is on
onChange being called in componentDidUpdate produces an
infinite loop when using the new React template variable
implementation.
Also fixes a spelling mistake
* implements feedback for documentation changes
* more doc changes
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
Co-authored-by: Daniel Lee <dan.limerick@gmail.com>
* Registry of standard option editors
* Move override processors to grafana data
* API for declaratively creating field config/panel options
* Enable declarative API in PanelPlugin for options and field config
* Use new api in react table panel
* Add color and unit picker to option registries
* Add some docs and tests
* Fix tests
because id is never defined on notification object, the condition 'n.id === an.id' is equal to 'undefined === undefined' which is always true.
that code is responsible for the situation when you delete one endpoint and it removes all of them.
* Minor changes
* Fixtures path is now relative to the project directory
* URL support module now has individual exports
* Scenario context timing issues resolved
... caused by being ran synchronously, instead of as part of Cypress' asynchronous queue.
* Scenario context API now supports multiple keys per function call
* addDataSource flow accepts a config argument
… and optionally checks datasource health status
* Added readProvisions command
* Added addPanel flow
* Add integration with Jeager
Add Jaeger datasource and modify derived fields in loki to allow for opening a trace in Jager in separate split.
Modifies build so that this branch docker images are pushed to docker hub
Add a traceui dir with docker-compose and provision files for demoing.:wq
* Enable docker logger plugin to send logs to loki
* Add placeholder zipkin datasource
* Fixed rebase issues, added enhanceDataFrame to non-legacy code path
* Trace selector for jaeger query field
* Fix logs default mode for Loki
* Fix loading jaeger query field services on split
* Updated grafana image in traceui/compose file
* Fix prettier error
* Hide behind feature flag, clean up unused code.
* Fix tests
* Fix tests
* Cleanup code and review feedback
* Remove traceui directory
* Remove circle build changes
* Fix feature toggles object
* Fix merge issues
* Fix some null errors
* Fix test after strict null changes
* Review feedback fixes
* Fix toggle name
Co-authored-by: David Kaltschmidt <david.kaltschmidt@gmail.com>
* BackendSrv: Added config to response
* QueryInspector: Removing config from showing up
* Replace config with request and make it be the unmodified params sent in
* Fixing issue 16090 where Grafana uses illegal characters in requests to Prometheus
* Rebase with Grafana and Merge branch 'master' of https://github.com/BhartiAgrawalNvidia/grafana into fix-16090
# Conflicts:
# public/app/plugins/datasource/prometheus/language_provider.ts
* Rebase with Grafana and Merge branch 'master' of https://github.com/BhartiAgrawalNvidia/grafana into fix-16090
# Conflicts:
# public/app/plugins/datasource/prometheus/language_provider.ts
* Use querystring to escape the url
Co-authored-by: Andrej Ocenas <mr.ocenas@gmail.com>
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* CircleCI: Run golangci-lint in two batches
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
* CircleCI: Fix typo
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
* Chore: adds fallback value to time series class
* Chore: changes fallback value from null to empty string in FilterInput component
* Update public/app/core/time_series2.ts
Co-Authored-By: Hugo Häggmark <hugo.haggmark@grafana.com>
* Chore: updates || to ?? operators
Co-authored-by: Lukas Siatka <lukasz.siatka@grafana.com>
Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>
* Add Tag component
* Add Tag story
* Add TagList
* Group Tab and TabList
* Fix typechecks
* Remove Meta
* Use forwardRef for the Tag
* Add actions instead of console.log
* Add previews
* Theme: Updates the theme to align panel & page background colors
* Updated dashboard settings view to be similar to new panel edit
* Updated themes
* Added shadow
* Updates generated files
* Minor fix to inspect drawer
* Clean up old dashboard setttings stuff
* Polish to search
* Updated truth image
* Minor tweaks to dropdown menu
* Updates and alignments between inspect drawer and explore rich history
* removed unused variables
* Minor tweak to light page header bg
Casually drops 2.0 in a couple of places in the docs so that a reader looking for information about supported SAML version can find it. Since SAML hasn't had any releases since 2005, we don't have to make a big deal out of it.
* Refactor: moves all the newVariables part to features/variables directory
* Feature: adds datasource type
* Tests: adds reducer tests
* Tests: covers data source actions with tests
* Chore: reduces strict null errors
* boilerplate that will be replaced by real code.
* added old editor template.
* added initial version of ad hoc editor.
* added working (apart from add) version of the editor.
* Added placeholder for picker.
* Have a working UI. Need to connect it so we refresh the variables on changes.
* variable should be updated now.
* removed console.log
* made the url work.
* cleaned up the adapter.
* added possiblity to create filter directly from table.
* moved infotext from general reducer to extended value of adhoc.
* fixed strict null errors.
* fixed strict null errors.
* fixed issue where remove was displayed before being added.
* fixed issue with fragment key.
* changed so template_src is using the redux variables.
* minor refactorings.
* moved adhoc picker to adhoc variable.
* adding tests for reducer and fixed bug.
* added tests or urlparser.
* added tests for ad hoc actions.
* added more tests.
* added more tests.
* fixed strict null error.
* fixed copy n pase error.
* added utilit for getting new variable index.
* removed console.log
* added location to reducerTester type and created a module type for it.
* changed so we only have one builder pattern.
* fixed tests to use static expected values.
* fixed strict errors.
* fixed more strict errors.
Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>
* Refactor value mappings UI to work better with new panel edit
* TS fix
* Experimenting with tabs in the sidebar
* Small refactor and added Panel general settings
* Merge fixes
* fix fieldOptions being used instead of fieldConfig
* Added icons to tabs (testing)
* Only 3 tabs i think, panel specific options need ot exist in first tab, some style tweaks
* Moved title and no value up
* Updated
* Render panel options in Options tab and add old options styles hack to display those vertically
* Basic settings to Panel settings
* Make nullcheck pass
* Snaps bump
* Fix standard configs not update
* Organise sidebar better, add tmp NewPanelEditorContext to hide duplicate legacy options
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
* Apply field overrides in PanelChrome
* Move applyFieldOverrides to panel query runner
* Review updates
* Make sure overrides are applied back on souce panel when exiting the new edit mode
* TS ignores in est
* Make field display work in viz repeater
* Review updates
* Review and test updates
* Change the way overrides and trransformations are retrieved in PQR
* Add fieldConfig property to PanelModel
* Dashboard migration v1
* Use field config when exiting new panel edit mode
* Gauge - use fieldConfig from panel model
* FieldDisplayOptions - don's extend FieldConfigSource
* Fix fieldDisplay ts
* StatPanel updated
* Stat panel defaults applied
* Table2 panel options update
* React graph updates
* BarGauge updated
* PieChart, Gauge, BarGauge and Stat updates
* PieChart - remove field config defaults from options
* FieldDisplayEditor - remove unused methos
* PanelModel - remove debugger
* Remove fieldConfig from field options when migrating dashboard
* Update data links migrations
* Update fieldDisaplay tests to respect new fieldConfig
* Update dashboard schema version in snapshots
* Fix BarGaugePanel test
* Rebase fixes
* Add onFieldConfigChange to PanelProps type
* Update shared single stat migration
* Pass PanelModel instead of options only for panel type change handler [breaking]
* Renames
* Don't mutate panel options
* Migrations update
* Remove obsolete snap
* Minor updates after review
* Fix null checks
* Temporarily (until we decide to switch to new pane edit) bring back old aditors
* Temporarily rename ValueMappingEditor and MappingRow to Legacy*
* Migrations update
* Updae setFieldConfigDefaults API
* Update the way field config defaults are applied
* Use standard field config for gauge, bar gauge and stat panels
* refactoring
* Revert dashboard fieldOptions migrations as those are handled by single stat migrator
* Fix ts in tests
* Strict null fix and some minor fixes
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
* Initial commit
* Visualised renamed or deleted datasources as well, if they have queries
* Pass ds image to card and information if the datasource was removed/renamed
* Set up card with datasource info and change run query
* Style comment, run button
* Fix button naming
* Remember last filters
* Update public/app/core/store.ts
* Update public/app/features/explore/RichHistory/RichHistory.tsx
* Update comments
* Rename datasource to data source
* Add test coverage, fix naming
* Remove unused styles, add feedback info
Co-authored-by: Ivana <ivana.huckova@gmail.com>
Co-authored-by: Ivana Huckova <30407135+ivanahuckova@users.noreply.github.com>
* azuremonitor: adds support for workspaces query macro...
...for Azure Logs template variable queries
* docs: azure logs workspaces templating function
* Update docs/sources/features/datasources/azuremonitor.md
Co-Authored-By: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
* docs: convert list into table
* docs: fixes prettier formatting problem
Prettier adds a slash before dollar signs in markdown. Disabling it
for this table with a prettier comment.
https://prettier.io/docs/en/ignore.html
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
* Update export-pdf.md
Minor edits and one question.
* Update docs/sources/enterprise/export-pdf.md
Co-Authored-By: Alexander Zobnin <alexanderzobnin@gmail.com>
* Update export-pdf.md
Co-authored-by: Alexander Zobnin <alexanderzobnin@gmail.com>
data.Frame (that can be series) are converted to as tsdb.TimeSeriesSlice - so new backend plugins can be shimmed into existing alerting
use sdk v0.31.0
* AlertNotifications: Translate notifications IDs to UIDs in alert Rule builder
* Avoid shadowing errors, raise validation error on non-existing notification id
* create a cache for notification Uids to minimize db overhead
* add cache usage test
* avoid caching empty notification Uids
* isolate db in alert notificationUid caching tests
* WIP: Rollup indiator progress
* Progress
* Progress, can now open inspector with right tab
* changed type and made inspect
* Showing stats
* Progress
* Progress
* Getting ready for v1
* Added option and fixed some strict nulls
* Updated
* Fixed test
* Add unit test coverage
* Add tests to util/richHistory
* Remove unused import
* Remove redundant tests
* Fix tests for components
* Test saving to local storage
* Add boxshadow to container
* Revert "Add boxshadow to container"
This reverts commit 5ca2e850e4.
* Initial commit
* Fix spelling of data sources
* Display sorting value for starred and query tab
* Fix handle color for light theme
* Add close button and fix animation
* Remove toggling of tabs
* Stop event propagation when clicking on comment buttons
* Add title for card functionality
* Remove interpolation for easier searchability of variables
* Improve syncing of comments and starred
* Add modal to check if user wants to permanently delete history
* Fix the height of the query card buttons
* Adjust slider's width based on drawer width
* Add spacing between slider and legend
* Semantic variable naming
* Fix disabled button when live tailing
* Add error handling
* Remove unused imports
* Fix starring, remove useEffect
* Remove emiting of appEvents.alertError in store
* Remove unused imports
* Feature: adds onTimeRangeUpdated to newVariables
* Refactor: removes VariableWithRefresh and unused func
* Refactor: adds console output when something throws as well
* Hide plugins list from viewers
* Made /api/plugins only return core plugins for users with viewer role
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
* Apply field overrides in PanelChrome
* Move applyFieldOverrides to panel query runner
* Review updates
* Make sure overrides are applied back on souce panel when exiting the new edit mode
* TS ignores in est
* Make field display work in viz repeater
* Review updates
* Review and test updates
* Change the way overrides and trransformations are retrieved in PQR
* Minor updates after review
* Fix null checks
* Start adding admin users list page to redux/react.
* removed unused code.
* added pagination.
* changed so we use the new form styles.
* added tooltip.
* using tagbadge for authlabels.
* remove unused code.
* removed old code.
* Fixed the last feedback on PR.
* Refactor: moves all the newVariables part to features/variables directory
* Feature: adds datasource type
* Tests: adds reducer tests
* Tests: covers data source actions with tests
* Chore: reduces strict null errors
* Explore: turns off actions execution on blur for Loki
* Explore: turns off actions execution on blur for Prometheus
* Explore: updates snapshots for Loki & Prometheus after turning off onBlur
* changed so data query response always it returned in the correct order when using mixed data sources.
* refactored the code to make it a bit simpler and not failing the tests.
* changed to simple array type.
* Docs: export dashboard as PDF
* Update docs/sources/enterprise/_index.md
Co-Authored-By: Leonard Gram <leo@xlson.com>
Co-authored-by: Leonard Gram <leo@xlson.com>
* Revert "API: Fix redirect issue when configured to use a subpath (#21652)" (#22671)
This reverts commit 0e2d874ecf.
* Fix redirect validation (#22675)
* Chore: Add test for parse of app url and app sub url
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
* Fix redirect: prepend subpath only if it's missing (#22676)
* Validate redirect in login oauth (#22677)
* Fix invalid redirect for authenticated user (#22678)
* Login: Use correct path for OAuth logos
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
* Explore: adds QueryRowErrors component
* Explore: updates QueryRow to use QueryRowErrors component
* Explore: updates PromQueryField to remove error render
* Explore: updates Elastic query field to remove error render
* Explore: updates LokiQueryFieldForm to remove error render
* Explore: updates QueryRow component - brings back passing errors down
* Explore: removes QueryRowErrors component
* Explore: updates ErrorContainer component - moves out data filtering
* Explore: updates QueryRow component - changes QueryRowErrors to ErrorContainer
* Explore: updates Explore component - adds error filtering for ErrorContainer
* Explore: updates ErrorContainer and adds a basic test for it
* Explore: updates Explore component props name and adds a basic render test
* Explore: adds snapshots for Explore and ErrorContainer
* Explore: adds a test for error render
* Explore: adds a comment to Explore component explaining the way we filter non-query-row-specific errors
* Explore: adds getFirstNonQueryRowSpecificError method to explore utilities
* Explore: extracts getFirstNonQueryRowSpecificError method and slightly refactors Explore component
* Explore: updates Explore component tests to cover non-query-row-specific errors
line 31 : makes user a superadmin : multiple use of 'a' can be avoided for better reading
line 35: User can belong to : remove 'be' it is incorrect
line 51: allow you : typo correction
* Minor changes
* Only exclude installed packages that are not @grafana/e2e itself
* Explicitly load Cypress tsconfig for clarity
* Fix Cypress tsconfig
* it was trying to extend a config that is not published
* it needs to be commonjs
* Explore: Refactor active buttons css
* Explore: Add query history button
* WIP: Creating drawer
* WIP: Create custom drawer (for now)
* Revert changes to Drawer.tsx
* WIP: Layout finished
* Rich History: Set up boilerplate for Settings
* WIP: Query history cards
* Refactor, split components
* Add resizability, interactivity
* Save history to local storage
* Visualise queries from queryhistory local storage
* Set up query history settings
* Refactor
* Create link, un-refactored verison
* Copyable url
* WIP: Add slider
* Commenting feature
* Slider filtration
* Add headings
* Hide Rich history behind feature toggle
* Cleaning up, refactors
* Update tests
* Implement getQueryDisplayText
* Update lockfile for new dependencies
* Update heading based on sorting
* Fix typescript strinctNullCheck errors
* Fix Forms, new forms
* Fixes based on provided feedback
* Fixes, splitting component into two
* Add tooltips, add delete history button
* Clicking on card adds queries to query rows
* Delete history, width of drawers
* UI/UX changes, updates
* Add number of queries to headings, box shadows
* Fix slider, remove feature toggle
* Fix typo in the beta announcement
* Fix how the rich history state is rendered when initialization
* Move updateFilters when activeDatasourceFilter onlyto RichHistory, remove duplicated code
* Fix typescript strictnull errors, not used variables errors
* Fix property descriptions, add missing properties
Fixes incorrect property descriptions, adds missing properties, and adds an up-to-date example.
* Update logo descriptions
Updates the "large" and "small" logo descriptions to specify SVG image type requirement, and that they may be identical
* Update docs/sources/plugins/developing/plugin.json.md
* Refactor the picker to FC
* Remove redundant variable
* currentDashboardId => currentDashboard
* Make isClearable configurable
* Use useAsyncFn for options loading
* Move getDashboards outside of component
* Refactor: Adds variables in state to TemplateSrv
* Refactor: Introduces some typings and structures
* Refactor: Introduces picker to adapter
* Refactor: Removes useState and introduces contains instead
* Refactor: Introduces Variable Editor
* Refactor: Adds uuid and simplifies state
* Refactor: Consolidates to VariableRenderer
* Refactor: Adds name change capability
* Refactor: Adds variableMiddleware
* Refactor: Adds ability to change Angular type to type in State
* Fix: Fixes so we check for duplicate names
* Refactor: Adds ability to change State type to type in Angular
* Refactor: Updates name in dashboard templating list
* Refactor: Adds label change to VariableEditor
* Refactor: Adds hide change to VariableEditor
* Refactor: Adds update ability
* Refactor: Adds tooltip
* Refactor: Adds SelectionOptionsEditor
* Refactor: Adds query editor and validation
* Refactor: Adds regex and sort to editor
* Refactor: Adds Selection options
* Refactor: Adds Varible Values Previewer
* Refactor: Changes from array in state to Record
* Refactor: Removes getVariableAtIndex from templateSrv
* Tests: Fixs broken tests
* Chore: Fixes duplicate merge import
* Refactor: Removes strict null errors
* Refactor: Adds duplicate variable
* Refactor: Adds remove variable
* Refactor: Adds change order of variables
* Refactor: Adds add new variable
* Chore: Fixes Prettier formatting
* Refactor: Adds VariablePicker
* Fixed so sub menu is displayed when we only have redux template variables.
* removed unused variable.
* tags will be visibile in the new react picker.
* added some nice colors to the tags.
* Added thunk for selecting a tag.
* Refactor: Cleans up templating state when dashboard unloads
* Refactor: Adds save capabilities for variables in state
* added possibility to select tag.
* Added so you can deselect a tag.
* Fixed issue with coloring on top.
* minor refactoring to make the code more slim.
* Refactor: Fixes dispatch return and copy of variable
* selecting options when tag i selected
* small refactoring.
* fixed so we use options.
* Refactor: Adds getValueForUrl capabilities
* first implementation of keyboard navigation on picker.
* removed comment.
* fixed so you can toggle all options.
* Refactor: Simplified state handling using Redux Toolkit and flat reducer structure
* Refactor: Adds sharedTemplatingReducer and queryVariableReducer
* Tests: Fixs broken tests
* Chore: Removes some strict null errors
* Tests: Fix broken tests
* Refactor: Splitted QueryVariablePicker into smaller components
* Refactor: Moves linktext and selected tags to component instead
* Fix: Fixes the ability to have multiple dropdowns opened at same time
* Fix: Fixes onKeyDown from prev refactor
* Refactor: Adds searchfilter searching
* Tests: Fixes after running e2e tests
* Refactor: Adds an attempt to solve dependencies at startup
* Refactor: Adds feature toggle
* Refactor: Resets all angular files to master
* Refactor: Move stuff to query folder
* Refactor: Initial commit for SubMenu component
* Refactor: Updated DashboardModel with new list
* Refactor: Adds feature toggle to dashboard model and friends
* Refactor: Adds picker to SubMenu
* Refactor: Fixes styling on SubMenu
* Refactor: Fixes processvariables
* Refactor: Initial EditorList skeleton
* Refactor: Refactors out VariableEditorList and VariableEditorContainer
* Refactor: Adds New variable functionality
* Refactor: Adds registred types
* Refactor: Adds edit existing variable functionality
* Refactor: Changes params to thunks
* Refactor: Small fix for cleaning up state when clicking update/add
* Refactor: Better typings for outer containers
* Refactor: Adds change order functionality
* Refactor: Removed notify angular args
* Change so the url is in sync with the redux template variables.
* Adding support for saving proper values and checking changes.
* Refactor: Adds duplicate variable functionality
* Feature: Adds remove variable functionality
* Refactor: Small refactor so e2e tests work as before
* Refactor: Returns null if no visible variables
* Refactor: Adds annotations to SubMenu
* Refactor: Fixes toggling of annotations in SubMenu
* added dashboard links to new submehu.
* Refactor: Small refactor breaking up into smaller components
* Fix: Fixes infinite recursive loop when changing varible name
* Templating: Do not mutate location query state
* Refactor: Fixes minor timing issue when adding new variable
* Refactor: removes initialization in variable_srv constructor
* Refactor: Suggestion on how to handle templating.list in DashboardExporter
* Refactor: Adds getVariables typings and changes ChangeTracker and ShareSnapshotCtrl
* Refactor: Adds getVariable on DashboardModel and changes DashboardMigrator
* Fix: Fixes repeated panels
* wip: starting to add custom variable type.
* Refactor: Merging two different toVariablePayload functions
* Tests: Fixes broken tests
* Fix: Reduces strict null errors
* Tests: Initial commit and fixes strange dependency order
* Tests: Covers sharedTemplatingReducer with tests
* Refactor: Rename state/index.ts => state/reducers.ts as every where else
* Refactor: Renames and moves adapters.ts
* Tests: Adds tests for templatingReducer
* Tests: Adds intitial tests for queryVariableReducer
* starting to ad custom variable.
* Tests: Adds more queryVariableReducer tests
* Added support for custom variable. Next up applying some DRY principles and refactoring.
* fixed compile issue.
* added todo.
* Tests: Fixes broken test
* Tests: Covers queryVariableReducer with tests and fixed a couple of bugs
* Fix: Fixes broken test
* Fix: Reduces strict null errors
* change so custom won't be depending on anything elese.
* fixed descriptions.
* removed unused dependency.
* Fixed issue when adding a new variable and editor is being unmount twice.
* fixed issue with select option loop.
* changed so we update query on typing in editor and removed it from component state.
* Moved runQuery up one level in the component tree.
* renamed action and moved it to custom actions.
* moved applyStateChanges to shared code.
* removed todo comment.
* first stab on moving picker to more general.
* Refactor: Changes so we always show variables type
* removed duplicate code regarding picker.
* Did some renamings.
* Feature: Adds text box variable type
* moved tests from query reducer to picker reducer.
* Removed picker from VariableState.
* removed reference to picker.
* Some more refactorings of the picker reducer + actions.
* Chore: Refactors away editor state to its own state slice (#22515)
* Refactor: Inital move, tests not working
* Tests: Adds editorReducer tests
* Refactor: Cleaning up
* Refactor: Moves logic to thunk instead
* Refactor: Initial commit
* Refactor: Combines reducers to one state
* Refactor: Adds combine reducers
* moved navigation logic flow to a thunk instead of in the component.
* fixed issue with rendering picker link.
* Refactor: Removes variable prop from templating.variables
* refactored and removed some more code.
* Feature: adds Constant variable type
* fixed so tags can be selected.
* Fix: fixes default hide for constant and enum order
* fixed so tags works again.
* Fix: fixes so we use Angular editor when newVariables is not defined
* Fix: fixes wrong hide default for Constant variable
* Fix: fixes bug when using duplicate button
* Fix: changes action id
* Tests: prepares for newVariables
* Chore: reduces strict null errors
* Refactor: removes uuidInEditorReducer for simplification
* Chore: changes after PR comments
* Chore: uses getConfig instead of config
* Tests: fixes so e2e tests check for feature toggle and fixed initLock bug
* Refactor: changes so sharedReducer uses createSlice instead
* Refactor: changes textBoxVariableReducer to use creactSlice instead
* Refactor: changes queryBoxVariableReducer to use creactSlice instead
* Refactor: changes customVariableReducer to use creactSlice instead
* Refactor: changes constantVariableReducer to use creactSlice instead
* Refactor: moves types to specific types.ts files instead
* changed so we use queryValue stored on the variable to populate options input when opening picker.
* Feature: adds the ability to test templating thunks using real store and middleware
* Chore: cleans up unused import
* excluded queryValue from the getSaveModel
* Refactor: adds whenAsyncActionIsDispatched to reduxTester
* Tests: adds initial tests for processVariables
* Added reducer tests for constant variable.
* added tests for custom reducer.
* added tets for texbox reducer.
* Tests: adds more tests for ProcessVariable
* Refactor: fixes processVariable flow so we do notrun updateOptions twice
* Tests: finishes tests for processVariables and removed skip test
* added actions tests for custom and constant.
* Tests: adds tests for setOptionFromUrl
* Tests: adds a naive variable mock builder
* Tests: adds tests for validateVariableSelectionState
* added tests for query variable actions.
* added last test for query actions.
* added more tests.
* some more tests.
* fixed typing errors.
* Fixed issues with variable tags.
Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
* Minor changes
* Revert CLI to JavaScript
... as Rollup is only accepts ESM modules and TypeScript would need to use the new incremental builds feature which causes weird Redux module errors.
* Adding git publish to toolkit
* grafana-toolkit new feature plugin:github-release
* Feedback from code review
1. Used async await and exec for executing commands
2. Using dist folder to get plugin information
* Reverting change to plugin.json back to original value.
* reverted changes to yarn.lock
* reverted changes to yarn.lock
* feedback from code review
* feedback from code review 2
* moved constants to recommended functions
* styling changes and reverting yarn.lock
* removing changes to package.json
* replced execLine with execa
* better error detection around the publish token
* made simpler with commitHash from build
* Testing showed a number of required changes:
- Make the sha configurable
or through environment variable
or through git config.
- Allow a release to be recreated
- Set name and repo from git config as this is what
ghr is expecting anyway.
- Appropriate errors if the user
tries to run a release without
doing a ci-build and ci-package first.
* Using spinner.
Took out extra dependencies out of project.json
wrote tests manually.
* Updated tests. Now passing
* Adding git publish to toolkit
* grafana-toolkit new feature plugin:github-release
* Feedback from code review
1. Used async await and exec for executing commands
2. Using dist folder to get plugin information
* Reverting change to plugin.json back to original value.
* reverted changes to yarn.lock
* reverted changes to yarn.lock
* feedback from code review
* feedback from code review 2
* moved constants to recommended functions
* styling changes and reverting yarn.lock
* removing changes to package.json
* replced execLine with execa
* better error detection around the publish token
* made simpler with commitHash from build
* Testing showed a number of required changes:
- Make the sha configurable
or through environment variable
or through git config.
- Allow a release to be recreated
- Set name and repo from git config as this is what
ghr is expecting anyway.
- Appropriate errors if the user
tries to run a release without
doing a ci-build and ci-package first.
* Using spinner.
Took out extra dependencies out of project.json
wrote tests manually.
* Updated tests. Now passing
* updated test for reducers, from master
* package.json and yarn.lock from master
* Trigger onchange in case user has edited a custom option, and then clicked outside the react select dropdown
* The width of the label is calculated so that the react select input field could get the same width. However, the react select input font is slightly wider, so we need to make that width a little bit larget than the label.
Use v0.19.0 of SDK.
Support handling of streaming resource response.
Disable gzip/compression middleware for resources
to allow chunked/streaming response to clients the gzip
middleware had to be disabled since it buffers the full
response before sending it to the client.
Closes#22569
Co-Authored-By: Arve Knudsen <arve.knudsen@gmail.com>
* Stats: add active user count query
* License: add info in settings
* Stats: Retrieve active users stats for different roles
+ Clean files and tests
* Stats: add dialect.Quote in queries
* Stats: improve tests (require instead of assert)
* Stats: improve tests (require instead of assert)
* ShareModal: use generic tab type
* ShareModal: able to extend with custom tabs
* ShareModal: able to extend dash/panel tabs separately
* grafana-ui: ModalTabContent component
* Minor changes
* Include Cypress support files in published package
* Added CLI
… with support for custom configurations (which Cypress does not currently support by default):
* Loads cypress.json from @grafana/e2e as a base config (via a custom Cypress plugin)
* Sets default values for project-level Cypress files (tests, etc)
* Optionally loads a cypress.json from the current working directory as overrides
* Updated lockfile
* Add fallback to search_base_dns if group_search_base_dns is undefined.
refs: #20862
* removed newline to make lint-go happy
* Added requested changes on ldap.md for last commit
Refs: #21263
* Docs: Adding a Markdown Style Guide
What this PR does / why we need it: This request builds a markdown style guide for writers documenting information about Grafana services for users.
This PR serves the need to make documentation and READMEs more consistent and maintainable.
Which issue(s) this PR fixes: This request fixes the issue grafana#19592
Fixes grafana#19592
Special notes for your reviewer:
@marcusolsson and @oddlittlebird, sorry for the delay. I've set up the style guide, and it is ready for review, or additional sections.
* Docs: Adding a Markdown Style Guide
What this PR does / why we need it: This request builds a markdown style guide for writers documenting information about Grafana services for users.
This PR serves the need to make documentation and READMEs more consistent and maintainable.
Which issue(s) this PR fixes: This request fixes the issue grafana#19592
Fixes grafana#19592
Special notes for your reviewer:
@marcusolsson and @oddlittlebird, sorry for the delay. I've set up the style guide, and it is ready for review, or additional sections.
* Docs: fixing typos and char repetition
Editing some typos in the text, and removing the repetition of A and B characters that appeared in the file.
* Docs: Changing content following review of new Markdown Style Guide
- adjustment to headings to sentence case.
- adding an introduction
- removing punctuation content
- making suggested word and punctuation fixes
Fixes#19592
* Add new form styles to dashboard picker
* Use Forms.Select for TimeZonePicker
* Use new form elements for DashboardPicker
* Grafana UI: Extract types from SelectBase, add utils.ts
* Grafana UI: Fix imports
* Grafana UI: Add support for value of type number
* Grafana UI: tweak value search function
* Grafana UI: Add tests for findSelectedValue
* Grafana UI: Add tests for cleanValue
* Grafana UI: Remove redundant check
* Grafana UI: Order imports
* Grafana-UI: Fix TimeZonePicker.story.tsx
* Grafana-UI: Fix timezone value
* Fix merge
* Grafana-UI: Use Cascader vs Forms.Select for TimeZonePicker
* Grafana-UI: Add default size props
Moves common request proxy utilities to proxyutil package with
support for removing X-Forwarded-Host, X-Forwarded-Port,
X-Forwarded-Proto headers, setting X-Forwarded-For header
and cleaning Cookie header.
Using the proxyutil package to prepare and clean request
headers before resource calls.
Closes#21512
* Add mechanism for imperatively showing modals
* Migration work in progress
* Reorganise save modal components
* use app events emmiter instead of root scope one
* Add center alignment to layoout component
* Make save buttons wotk
* Prettier
* Remove save dashboard logic from dashboard srv
* Remove unused code
* Dont show error notifications
* Save modal when dashboard is overwritten
* For tweaks
* Folder picker tweaks
* Save dashboard tweaks
* Copy provisioned dashboard to clipboard
* Enable saving dashboard json to file
* Use SaveDashboardAsButton
* Review
* Align buttons in dashboard settings
* Migrate SaveDashboardAs tests
* TS fixes
* SaveDashboardForm tests migrated
* Fixe some failing tests
* Fix folder picker tests
* Fix HistoryListCtrl tests
* Remove old import
* Enable fixed positioning for folder picker select menu
* Modal: show react modals with appEvents
* Open react modals using event
* Move save dashboard modals to dashboard feature
* Make e2e pass
* Update public/app/features/dashboard/components/SaveDashboard/SaveDashboardButton.tsx
* Hacking old vs new buttons to make all the things look like it's old good Grafana ;)
Co-authored-by: Alexander Zobnin <alexanderzobnin@gmail.com>
* clean PR #17366
* udpate vendor
* [WIP] Implement projects management for stackdriver
* [WIP] Implement projects management for stackdriver
* [WIP] Implement projects management for stackdriver
* Implement projects management for stackdriver
* [WIP][Tests] Fix errors
* clean anonymous struct
* remove await
* don't store project list
* Add default project on query editor
* gofmt
* Fix tests
* Move test data source to backend
* Use segment instead of dropdown. remove ensure default project since it's not being used anymore.
* Fix broken annotation editor
* Load gceDefaultAccount only once when in the config page
* Reset error message on auth type change
* Add metric find query for projects
* Remove debug code
* Fix broken tests
* Fix typings
* Fix lint error
* Slightly different approach - now having a distiction between config page default project, and project that is selectable from the dropdown in the query editor.
* Fix broken tests
* Attempt to fix strict ts errors
* Prevent state from being set multiple times
* Remove noOptionsMessage since it seems to be obosolete in react select
* One more attempt to solve ts strict error
* Interpolate project template variable. Make sure its loaded correctly when opening variable query editor first time
* Implicit any fix
* fix: typescript strict null check fixes
* Return empty array in case project endpoint fails
* Rename project to projectName to prevent clashing with legacy query prop
* Fix broken test
* fix: Stackdriver - template replace on filter label
should have a regex format as that escapes the dots
in the label name which is not valid.
Co-authored-by: Labesse Kévin <kevin@labesse.me>
Co-authored-by: Elias Cédric Laouiti <elias@abtasty.com>
Co-authored-by: Daniel Lee <dan.limerick@gmail.com>
* Elastic: To get fields, start with today's index and go backwards
* Elastic: distinguish non-existing indices from other issues; change index traversal from recursive to iterative; go through a max of 7 days
* Elastic: fix the comments
Co-authored-by: Andrej Ocenas <mr.ocenas@gmail.com>
* Inital commit with new page
* Make routing work
* Correct field
* Move submit button and fix routing after signup
* Remove comments
* Fix feedback
* Undo mistake
This feature would provide a way for administrators to limit the minimum
dashboard refresh interval globally.
Filters out the refresh intervals available in the time picker that are lower
than the set minimum refresh interval in the configuration .ini file
Adds the minimum refresh interval as available in the time picker.
If the user tries to enter a refresh interval that is lower than the minimum
in the URL, defaults to the minimum interval.
When trying to update the JSON via the API, rejects the update if the
dashboard's refresh interval is lower than the minimum.
When trying to update a dashboard via provisioning having a lower
refresh interval than the minimum, defaults to the minimum interval
and logs a warning.
Fixes#3356
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
* NewPanelEdit: Added angular options to new panel editor and started looking and angular component state
* Moved angular component state to redux
* Close to working 100%
* Think everything is working
* AlertTab: Alert tab now gets angularComponent from redux
* Fixed panel menu access to angular panel component
* Added new tests
* Fixed unit test
* Fixed strict null errors
* Fixed typescript issues
* fixed issues
* Specify usage of datasource whitelist
Added a sentence explaining the data_source_proxy_whitelist property does not have any effect on pgsql mssql and mysql.
Co-Authored-By: Arve Knudsen <arve.knudsen@gmail.com>
Co-Authored-By: Marcus Efraimsson <marcus.efraimsson@gmail.com>
* trying out api-extractor.
* works with our setup of build.
* wip.
* changed the packages so it works better with the api-extractor.
* Changes to make the api-extractor to work.
* cleaned up the api-extractor config files.
* added some more documentation.
* added tsdoc-metadata to gitignore.
* removed the generated docs (will do that in another PR).
* added execute permission to script for generating dosc.
* added so we will push generated docs to branch.
* will clean packages_api on abort.
* Fixed failing tests.
* fixed formatting issue with typedoc comment.
* temporarily disabled tslint rules about namespace until https://github.com/microsoft/rushstack/issues/1029 is resolved
* temporary enabled bable namespaces.
* updated build script.
* updated script.
* updated script with some colors.
* changed to camelCase.
* removed spacing.
* Starting to add documentation guidelines.
* added examples headline.
* added menu options.
* added parameters and return values.
* Fixed merge error.
* Added first version of auto-generated docs.
* changed so we use the eslint ignore syntax.
* changed to correct eslint ingnore comment.
* fixed some spelling errors reported by codespell.
* added script to generate docs in current folder.
* updated api docs.
* lerna bootstrap.
* added eror to the ingore words list.
* removed file that should be ignored.
* updated locKFILE.
* referenced the code comments guidelines.
* updated packages.
* updated deps.
* updated the autogenerated dosc.
* adding missing new line.
* trying out api-extractor.
* works with our setup of build.
* wip.
* changed the packages so it works better with the api-extractor.
* Changes to make the api-extractor to work.
* cleaned up the api-extractor config files.
* added some more documentation.
* added tsdoc-metadata to gitignore.
* removed the generated docs (will do that in another PR).
* added execute permission to script for generating dosc.
* added so we will push generated docs to branch.
* will clean packages_api on abort.
* Fixed failing tests.
* fixed formatting issue with typedoc comment.
* temporarily disabled tslint rules about namespace until https://github.com/microsoft/rushstack/issues/1029 is resolved
* temporary enabled bable namespaces.
* updated build script.
* updated script.
* updated script with some colors.
* changed to camelCase.
* removed spacing.
* Starting to add documentation guidelines.
* added examples headline.
* added parameters and return values.
* Fixed merge error.
* changed so we use the eslint ignore syntax.
* changed to correct eslint ingnore comment.
* fixed some spelling errors reported by codespell.
* added script to generate docs in current folder.
* lerna bootstrap.
* removed file that should be ignored.
* updated locKFILE.
* referenced the code comments guidelines.
* updated packages.
* updated deps.
* Docs: Add info on active LDAP sync
* Update docs/sources/enterprise/enhanced_ldap.md
Co-Authored-By: Leonard Gram <leo@xlson.com>
* Docs: remove usage of "he" in LDAP sync
Co-authored-by: Leonard Gram <leo@xlson.com>
* Adding new svg for back arrow button
* Created new back button component
* same stroke width
* minor fix
* Style changes
* hover animation
* Minor tweak
* Suggesting couple of changes to the document
Line 15 should be modified to use your application instead of an application, same way it is being used in other auth docs.
typo in line 76, can is repeated twice . Correcting that typo
* Update docs/sources/auth/gitlab.md
Co-Authored-By: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
* Update gitlab.md
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
* Add new form and functionality
* Add new files
* Connect to Redux and add navigation stuff
* Add required login/name
* Remove import
* Fix feedback
* Replace direct button spacing with HorizontalGroup
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
* Couple of changes to the document
Correcting a typo in line 53
Line 226 should be re-written as "To easily configure"
* Update docs/sources/auth/generic-oauth.md
Co-Authored-By: Arve Knudsen <arve.knudsen@gmail.com>
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
By storing render key in remote cache it will enable
image renderer to use public facing url or load
balancer url to render images and thereby remove
the requirement of image renderer having to use the
url of the originating Grafana instance when running
HA setup (multiple Grafana instances).
Fixes#17704
Ref grafana/grafana-image-renderer#91
Suppresses stacktrace in recovery middleware if error is
http.ErrAbortHandler.
Skips writing response error in recovery middleware if
resoonse have already been written.
Skips try rotate of auth token if response have already
been written.
Skips adding default response headers if response have
already been written.
Fixes#15728
Ref #18082
Co-Authored-By: Arve Knudsen <arve.knudsen@gmail.com>
Put the cipher suites with Forward Secrecy at or nearer the top, keeping any TLS v1.3 suites at the top, following best practice guides for the ordering of the rest. There is no change to the selection of suites only reordering.
Now any errors logged by http.ReverseProxy are forwarded to
Grafana's logger and includes more contextual information like
level (error), user id, org id, username, proxy path, referer and
IP address.
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
* fixed issues with timepicker closing when month is changed.
* removed console.logs.
* fixed so calendar isn't changing size when selecting several dates.
* Prevent calendar from closing when changing year.
* fixed according to PR feedback.
* Update timeseries.md
Update to docs-imagebox for the image link.
* Update docs/sources/guides/timeseries.md
Co-Authored-By: Marcus Olsson <olsson.e.marcus@gmail.com>
Co-authored-by: Marcus Olsson <accounts+github@marcus.se.net>
if the client closes the connection we should not
rotate token since the client will never receive the
new token.
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* Start Angular migration
* Add SignupCtrl
* Change name signup
* Add backend call
* Put form in separate file
* Add form model
* Start using react-hook-forms
* Add FormModel to state
* Reduxify
* Connect nav with Redux
* Fix routing and navModel
* Fetch state options on mount
* Add default values and add button margin
* Add errror messages
* Fix title
* Remove files and cleanup
* Add Signup tests
* Add boot config assingnAutoOrg and verifyEmailEnabled
* Remove onmount call
* Remove ctrl and move everything to SignupForm
* Make routeParams optional for testing
* Remove name if it is empty
* Set username
* Make function component
* Fix subpath issues and add link button
* Move redux to SignupPage
* Add color theme and serve static files for storybook
* Add color theme and serve static files for storybook
* Export dark and light theme
* Add storybook-dark-mode package
* Add theme toggle functionality
* Toggle story theme too
* Remove unused import
* webpack config changes not needed
* initial wip
* Progress on new threshold design
* Testing radio button group for mode option
* Starting to come together
* Fixed percent mode
* Full width radio groups
* Minor tweaks, cursor to trash icon and hover state
* fixed unit tests
* Fixed storybook
* re-ordering fields
* Updated snapshot
* Make it consistent, add vs create
* first things
* rename
* add stats, remove table related changes
* header size and expand icon
* add case for nan request time
* fixing null checks
* reverting changes to table
* fix background on header
* Some small fixes after review
* do not use formInputBg
* test apply
* test apply
* Move standard field config editor registry to grafana-data
* merge master
* Apply field config defaults
* Make field and dataFrameIndex optional on on FieldOverrideContext
* Apply custom field config overrides
* Gauge - make sure thresholds are set
* Move series and field scoped vars calculation
* Enable template variables interpolation in title fields
* Expose standars field configs from grafana ui via function
* Add missing option to the config for the min value to be derived from field values
* Fix ts issue
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
* Suggesting few changes to the doc
1. Note should be followed by a dot (.)
2. Correcting a typo in default
3. Re-writing sub sentence to make reading better
* Update docs/sources/installation/configuration.md
Co-Authored-By: Arve Knudsen <arve.knudsen@gmail.com>
* Update configuration.md
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
Idea is to provide information to the user that query can be executed on any data source that is available in grafana, therefore suggested little modification
* PanelEdit: Fixed timing and state related issues
* Added unit test and changed some logic
* Fixed id logic
* Updated snapshots
* Update public/app/features/dashboard/state/PanelModel.ts
Co-Authored-By: Dominik Prokop <dominik.prokop@grafana.com>
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
* Angular/React: Migrates FolderPicker from angular to react
* move to core
* snap
* minor changes
* more removes
* Managing creating new and saving in movetofolderctrl
* Do not use new forms.field, fix select menu
* FolderPicker responsible to creating new folder
* create new as prop
* snap
* remove unnecessary things
* remove console log
* snap
* fix null checks
* add search debouncing
* set folder to state, null check
* typing folder
* adding case for loadOptions
* snap
Co-authored-by: Peter Holmberg <peterholmberg@users.noreply.github.com>
* Implement Azure AD oauth
* Use go-jose and cleanup
* Update go-jose in go.mod
* cleanup
* Add unit tests
* Fix scopes
* Add documentation page
* Improve documentation
* Convert extract_role into function.
* Do not use upn and replace unique_name with preferred_username
* Configure login button
* Use official microsoft icon and color from branding guideline.
* Add Azure AD config section in sample.ini.
* Loki, Prometheus: Fix syntax to not highlight # in quotes as a comment in queryField
* Loki, Prometheus: Fix syntax to not highlight # in quotes as a comment in queryField
* Fix regex
* PromQL, LogQL: Update syntax
* LogQL, PromQL highlighting: Add tests
* Annotations: Makes various annotation and alert calls cancelable
Fixes#21943
* Refactor: Uses backendSrv.get method with requestId instead
* Update public/app/features/annotations/annotations_srv.ts
Co-Authored-By: Marcus Efraimsson <marcus.efraimsson@gmail.com>
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
* Forms/RadioButtonGroup: Improves semantics and simplifies CSS
- Changes base element to radio input for improved semantics & automatic keyboard support
- Simplifies CSS
* Docs: add LDAP active sync limitation for single bind
* Docs: update header for LDAP active sync limitation
Co-Authored-By: Leonard Gram <leo@xlson.com>
* Make $__range more precise in Prometheus
It is now always equivalent to `${__range_s}s`, rather than rounding
down to an integer multiple of the biggest possible unit. For example,
a range of 47 hours is now represented as `169200s` rather than `1d`.
Closes#21689.
* Update a unit test to match new __range calc
* Move data links suggestions to grafana-data
* Data links - field config and overrides
* Lint
* Fix test
* Add variable suggestions to field override context
* Revert "Move data links suggestions to grafana-data"
This reverts commit 5d8d01a65e.
* Move FieldConfigEditor to core
- Fix bug with NaN in alerting - Closes#21953
- Alert reducers (avg/max/etc) drop null values from their calculation. This change makes it so NaN values are handled in the same way as null values.
* Grafana-UI: Add caret to the picker
* Grafana-UI: Customise popup's font-size and border-color
* Grafana-UI: Replace highlight background with border color
* Grafana-UI: Use stylesFactory vs inline classes
* Grafana-UI: Import stylesFactory from themes vs index
* Assure base url when single stat, panel and data links are built
* Update public/app/features/dashboard/dashgrid/PanelHeader/PanelHeaderCorner.tsx
* Update public/app/features/panel/panellinks/link_srv.ts
* Update public/app/features/panel/panellinks/link_srv.ts
* Update public/app/features/panel/panellinks/link_srv.ts
* Update public/app/features/panel/panellinks/link_srv.ts
* Review updates
* Remove unnecessary code
* Add title editor
* Wip
* FIeld config overrides UI (v1)
* Basic property override editors
* name to prop
* use prop not path
Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
* WIP: Angular panel chrome, this is going to be tricky
* AngularPanelChrome: initial render works
* Options are showing up
* viz options working
* Fixed singlestat background
* AngularPanels: Fixed alert tab
* Removed anuglar loading spinner
* Dashboard: Refactor dashboard reducer & actions
* Dashboard: minor refactoring
* PanelChrome: loading state moved to header
* Subscribe to render events to solve title update issue
* Time info and query errors now works
* PanelHeader: unifying angular and react behavior
* added getPanelMenu test
* Scrollable now works again
* Various fixes
* Making stuff work
* seperate event emitter for angular
* Fixed issue sending updated dimensions to angular panel
* Minor tweaks
* Fixed tests
* Alerting: alert state now works
* Fixed unit tests
* Fixed a few null check errors
* Simplified events handling
* Fixed strict null checks
* initial POC
* fix import
* field config editor in the sidebar
* field config editor in the sidebar
* field config editor in the sidebar
* sidebar
* include threshold in sidebar
* include threshold in sidebar
* include threshold in sidebar
* init to empty threshold
* merge
* Make sure editor is fully rendered when page is refreshed
* use scrollbars
* add matcher UI folder
* remove
* Field options basic editors
* Removed deebugger
* Make number field editor controlled
* Update public/app/features/dashboard/state/PanelModel.ts
* Update public/app/plugins/panel/gauge/GaugePanel.tsx
* Ready for production
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
* Add an early exit
* Fix issue with blur and only display label
* Remove unused code
* Enabled custom value
* Update test
* Add custom value creating according to #21869
* Alphabetized tslint and tsconfig files
* Optimized tsconfig files
* Optimized editorconfig & prettier config files
… to reduce redundancy
* Switched to @grafana/tsconfig
… and:
* de-duped options
* removed options with default values
* Fixed nasty issue with types for nested slate-react
* Replaced TSLint with ESLint
* TSLint disables → ESLint disables
… also JSHint removals, which haven’t had an affect since it was replaced with TSLint.
* Compliances for ESLint, Prettier and TypeScript
* Updated lockfile
* First attempt
* Save confirmation with discard option, reusing queriess a little bit differently
* simplify cloning panels and restoring last results in panel query runner
* Remove save button
* Update public/app/features/dashboard/components/PanelEditor/PanelEditor.tsx
* Exit/discard buttons
* Update snaps
* Review comments
* Fix lint
* Explore: updates grafana-data explore query field props with explore mode
* Explore: updates query row to pass down explore mode to query fields
* Explore: adds LokiExploreQueryEditor
* Explore: updates loki query field form to render children
* Explore: adds loki explore extra field component
* Explore: adds extra field element to loki query field form
* Explore: updates loki explore query editor to use extra field element
* Explore: moves ExploreMode to grafana-data
* Explore: updates query row limit string
* Explore: adds maxLines to DataQuery
* Explore: adds maxLines to loki datasource runRangeQueryWithFallback
* Explore: adds onChangeQueryLimit to LokiExploreQueryEditor
* Explore: updates loki explore query editor to render extra field only in logs mode
* Explore: fixes query limits for live and legacy queries
* Explore: fixes result processor max lines limit in get logs result
* Explore: fixes Loki datasource limit test
* Explore: removes unnecessary ExploreMode from Loki language provider
* Explore: fixes formatting
* Explore: updates grafana-data datasource types - replaces strings with explore mode enum
* Explore: updates loki explore query field props to take ReactNode
* Explore: updates the way we calculate loki query lines limit to fall back to 0 lines on negative or invalid input instead of datasource maxLines
* Explore: updates result processor get logs result method to avoid counting invalid/negative line limits
* Explore: updates loki result transformer to process only an appropriate slice of a result instead of an entire one
* Explore: adds a method for query limit preprocessing/mapping
* Explore: updates loki datasource run range query with fallback method to use options.maxDataPoints in dashboards
* Explore: removes unnecessary maxlineslimt from getLogsResult in resultProcessor
* Explore: moves line limit to metadata
* Explore: adds an ability to specify input type of extra field
* Explore: updates LokiExploreQueryEditor - adds an input type
* Explore: updates LokiExploreQueryEditor to run queries when maxLines is positive
* Explore: fixes failing import of ExploreMode
* Explore: fixes reducers test imports formatting
* Explore: updates Loki extra field with min value set to 0
* Explore: exports LokiExploreExtraFieldProps
* Explore: adds render test of LokiExploreQueryEditor
* Explore: adds LokiExploreQueryEditor snapshot
* Explore: updates LokiExploreQueryEditor onChangeQueryLimit method to prevent it from running when query input is empty - fixes cheatsheet display issue
* Explore: updates Loki editor snapshots
* Explore: fixes typo in test set name in LokiExploreQueryEditor
* Explore: adds a render test of LokiExploreExtraField
* Explore: fixes typo in LokiExploreQueryEditor
* Explore: updates LokiExploreQueryEditor snapshot due to timezone issues
* Explore: updates LokiExploreExtraField to export both functional component and a version using memo
* Explore: updates LokiExploreQueryEditor to export both functional component and memoized function
* Explore: updates LokiExploreQueryEditor - removes unnecessary react fragment
* Explore: updates LokiExploreQueryEditor snapshot
* Explore: adds LokiExploreQueryEditor tests for different explore mode cases
* Explore: fixes Loki datasource and result transformer
* Explore: updates LokiExploreQueryEditor snapshot
* Explore: updates LokiExploreQueryEditor tests and test setup
* Explore: updates LokiExploreQueryEditor - refactors component
* Explore: updates LokiExploreQueryEditor to use default import from LokiExploreExtraField
* Explore: updates LokiExploreQueryEditor snapshot
* Explore: fixes formatting
* Explore: updates LokiExploreQueryEditor max lines change
* Explore: updates LokiExploreQueryEditor tests checking ExtraFieldElement
* Explore: adds mock loki datasource to LokiExploreQueryEditor
* Explore: updates LokiExploreQueryEditor test mock - adds language provider
* Explore: updates LokiExploreQueryEditor snapshot
* Explore: updates Loki ResultTransformer to filter out rows on limit - logic to be moved into a component with new form styles
* Explore: updates LokiExploreQueryEditor tests
It was missing for ldap_login which means that the first signup failed
for users with LDAP+quota enabled. There's also potential cases where we
can't provide a request context (background jobs) which is also covered,
but needs a refactoring.
Drop indices and create new ones and rewrites annotation find query
to address performance issues when querying annotation table and
there is a large amount of rows.
Fixes#21902
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
Co-authored-by: Kyle Brandt <kyle@kbrandt.com>
* CircleCI: Move postgres/mysql integration tests to step after linting
* CircleCI: Implement publishing of packages and Docker images for new master pipeline
* DatasourceEditor: Add UI to edit custom HTTP headers
Support for custom headers was added in #11643 but was missing in the UI.
Fixes#12779
* Review
* Layout updates
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
One has to use "grafana/grafana" image - only using "grafana" will
result in an error message like this:
Error response from daemon: pull access denied for grafana, repository does not exist or may require 'docker login'
It's a good idea to daemonize new container. The install instructions
for Docker do this, and this instructions assume that running container
already is daemonized (otherwise you wouldn't have to stop it).
Best practise would be to create a new container, then stop old one and
start new one - this would reduce downtime. To keep instructions simple
and understandable, I didn't include that.
* Add new global built-in variables #20523
new branch from master
* #20523 Revert change on __from and __to like requested
* #20523 simplify contextSrv access
* #20523 simplify contextSrv access
* #20523 repair jest tests
This is to make the custom dockerfiles compatible with our instruction
to use persitent volumes for the /var/lib/grafana dir. Without this
change the contents of that folder will be overshadowed by the persitent
volume and none of the pre-installed plugins will be available.
* Applied prettier to relevant webpack configs
* Replaced ng-annotate with babel-plugin-angularjs-annotate
… and replaced ts-loader with @preset/typescript
* Removed redundant import
… that is problematic with Babel's module resolver
* Updated lockfile
* Traspile debug package to es5 for PhantomJS support
* Update babel to latest version
* Remove @babel/poolyfill and url search params polyfill
* Add ts-loader to grafana-ui dependencies
* Update prod webpack build to use cor-js 3
* Applied prettier to relevant webpack configs
* Replaced ng-annotate with babel-plugin-angularjs-annotate
… and replaced ts-loader with @preset/typescript
* Updated lockfile
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
* Docs: Add information about license expiration
* Docs: Improve clarity of license expiration page
* review comments
* change renewal instructions to a list
* language improvements
* review fixes
* add error tab
* conditional tabs
* feedback from review
* expose lastResult via function
* remove todo and weird char
* fixing overflow states and height of tabcontent
* style fixes
* more changes to scroll handling
* fixing null checks
* Change drawer content padding
* Add scroll in the story
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
* Fixed issue where gauge throw error on empty result.
* Some refactorings to improve the code.
* Added some tests to make sure this doesn't happen again.
This is a small documentation update for the situation that led to
#19842 in the first place. It describes a procedure required to
provide root certificates to the headless Chrome instance used
by the Grafana image renderer plugin.
* Replace bash/json with http in http_api codeblocks
Since http is used elsewhere on the API docs and makes the
markdown rendering look different on the blocks that use bash/json
* Fix the annotations API link on 'Features'
- Noticed the Features/Dashboard Features/Annotations link pointing to
the HTTP API was linking itself instead of '../http_api/annotations.md'.
- Also add a link on Dashboard Export and Import to its HTTP API.
* Add missing links to features in API Index
Noticed there was 3 missing references in the API docs index.
- https://grafana.com/docs/grafana/latest/http_api/playlist
- https://grafana.com/docs/grafana/latest/http_api/datasource_permissions
- https://grafana.com/docs/grafana/latest/http_api/external_group_sync
Last two are Grafana Enterprise -only, so created a separate subsection
for them.
* Add info about meta data labels
* Add part about auto period calculations in cloudwatch
* Minor adjustments
* Updates after feedback
* Add more context
* Clarify what a metadata label is
* BackendSrv: Adds status, headers, statusText, redirect, type and url back to response
Fixes#21662
* BackendSrv: Adds request object back to datasourceRequest response
Fixes#21662
* Docs: gitlab team-sync documented correctly
* docs: initial docs for whitelabeling
* Docs: enterprise repositories
* Docs: rpm enterprise install
* Docs: re-structured the rpm install page to be more similar to the deb page
* Docs: responded to review feedback
* Docs: recommends the enterprise edition
* Update docs/sources/installation/debian.md
Add support for passing tags to Pagerduty and allow notification
on specific event categories such as Class, Group and Component.
Ref #19912, #19913
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
In 043bb59 a URLSearchParams usage was introduced which is not supported by PhantomJS. @babel/polyfill(deprecated) does not contain polyfill for URLSearchParams, hence the code (and Prometheus graphs rendering) was failing in PhantomJS environment.
The solution is to add https://www.npmjs.com/package/url-search-params-polyfill that takes care of the URLSearchParams
* Create basic react page for AdminUserCreate
* Forms.Field - render asterisk when field is marked as required
* Add validation to user create form wih react-hook-form
* Remove Angular code for UserCreatePage
* Remove commented route for admin settings
* Remove unused import
* Hide react-hooks-form behind Form component
* Fix webkit autofill
* Webkit autofill on inpiuts - bring back focus shadow
* Temporarily fix story (before 21635 is merged)
* Form: docs and minor updates to new form elements (#21635)
* Allow Switch, checkbox to be uncontrolled, forward refs, styles update
* Add Form docs
* User create page update
* Remove unused import
* Apply review notes
* Docs: Whats new updates
* Add cloudwatch and stackdriver paragraphs
* Minor changes
* Add link helper to render gif
* Docs: what's new updates
Co-authored-by: Erik Sundell <erik.sundell87@gmail.com>
* Changelod: v6.6.0-beta1
* Changelog: grafana/ui v6.6.0-beta.1.0
* Changelog: moved toolkit to its own file
* Changelog: fix version
* Remove closed PR
Co-authored-by: Sofia Papagiannaki <papagian@users.noreply.github.com>
* Chore: Remove angular dependency from backendSrv
* Refactor: Naive soultion for logging out unauthorized users
* Refactor: Restructures to different streams
* Refactor: Restructures datasourceRequest
* Refactor: Flipped back if statement
* Refactor: Extracted getFromFetchStream
* Refactor: Extracts toFailureStream operation
* Refactor: Fixes issue when options.params contains arrays
* Refactor: Fixes broken test (but we need a lot more)
* Refactor: Adds explaining comments
* Refactor: Adds latest RxJs version so cancellations work
* Refactor: Cleans up the takeUntil code
* Refactor: Adds tests for request function
* Refactor: Separates into smaller functions
* Refactor: Adds last error tests
* Started to changed so we require getBackendSrv from the @grafana-runtime when applicable.
* Using the getBackendSrv from @grafana/runtime.
* Changed so we use the getBackendSrv from the @grafana-runtime when possible.
* Fixed so Server Admin -> Orgs works again.
* Removed unused dependency.
* Fixed digest issues on the Server Admin -> Users page.
* Fix: Fixes digest problems in Playlists
* Fix: Fixes digest issues in VersionHistory
* Tests: Fixes broken tests
* Fix: Fixes digest issues in Alerting => Notification channels
* Fixed digest issues on the Intive page.
* Fixed so we run digest after password reset email sent.
* Fixed digest issue when trying to sign up account.
* Fixed so the Server Admin -> Edit Org works with backendSrv
* Fixed so Server Admin -> Users works with backend srv.
* Fixed digest issues in Server Admin -> Orgs
* Fix: Fixes digest issues in DashList plugin
* Fixed digest issues on Server Admin -> users.
* Fix: Fixes digest issues with Snapshots
* Fixed digest issue when deleting a user.
* Fix: Fixes digest issues with dashLink
* Chore: Changes RxJs version to 6.5.4 which includes the same cancellation fix
* Fix: Fixes digest issue when toggling folder in manage dashboards
* Fix: Fixes bug in executeInOrder
* Fix: Fixes digest issue with CreateFolderCtrl and FolderDashboardsCtrl
* Fix: Fixes tslint error in test
* Refactor: Changes default behaviour for emitted messages as before migration
* Fix: Fixes various digest issues when saving, starring or deleting dashboards
* Fix: Fixes digest issues with FolderPickerCtrl
* Fixed digest issue.
* Fixed digest issues.
* Fixed issues with angular digest.
* Removed the this.digest pattern.
Co-authored-by: Hugo Häggmark <hugo.haggmark@gmail.com>
Co-authored-by: Marcus Andersson <systemvetaren@gmail.com>
* CI: ee msi build
* shellcheck
* Fake it so that we get a ee msi build on pull request runs
* fix error in prep job
* save msi for testing
* get enterprise zip
* Fixes to version and hash detection.
* Removes ci test code
As part of the new improvements to JMESPath in #17149 a
commit ensuring Role and Email data could be queried from
id_token was lost.
This refactors and fixes extracting from both token and user
info api consistently where before only either token or
either user info api was used for extracting data/attributes.
Fixes#20243
Co-authored-by: Timo Wendt <timo@tjwendt.de>
Co-authored-by: twendt <timo@tjwendt.de>
Co-authored-by: henninge <henning@eggers.name>
Co-Authored-by: Henning Eggers <henning.eggers@inovex.de>
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
6.2-beta1 changed so that data sources, dashboards and alert notifiers
are provisioned on service Init where's before only data sources and
alert notifiers was provisioned on service Init and dashboards was first
provisioned in service Run which happens after Grafana server have
started.
This change reverts so that dashboard provisioning are first happening
in service Run, after Grafana server have started.
Fixes#21133
* Calculate min period based on time range and no of queries
* Use hardcoded array of periods if period is not defined actively by the user
* Fix broken tests
* Use a smaller max period for auto interval
* Fix broken tests
* Test period calculation
* Test min retention period
* Fix broken test
* Applied prettier to some webpack configs
* Removed ng-annotate
… and used same annotation approach as webpack.hot.js
* Removed redundant import
… that is problematic with Babel's module resolver
* Updated lockfile
* Replace ts-loader with babel-loader in webpack.dev
* Change tslint-loade order in dev webpack config
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
* Rewrite angular segments for filter and group by in react
* wip: refactoring
* Update metric find queries
* Remove old maps used to create labels - use one map for all types instead
* Use value as label (again) for filters ang groupby
* Remove old filter
* Remove not used code
* Fixes after pr feedback
* Fix broken tests and add new metadata tests
* Add index file to make imports cleaner
* Cleanup. Remove old angular filter code
* Fix broken tests
* Use type switching instead of if statements
* Use globals for regex
* Updates after pr feedback
* Make sure it's possible to filter using the same key multiple times
* Replace metric select with segment component
* Pass template vars as props
* Refactor meta labels code
* Reorder template variables
* Fix broken tests
* Reset metric value when changing service
* Fix lint issue.
* Make tests independant of element order
* Include kubernetes.io in regex
* Add instruction in help section
* svc alerting - use a shorter ctx to upload the img
This will prevent timeout on img upload to cancel the notifications from being sent
* components img uploader - pass the ctx to aws lib
* make webdavuploader use the ctx
* make azureblobuploader use the ctx
* rename uploadImage() to renderAndUploadImage()
for better clarity about what this method work
* Use timeout + 2s for plugin renderer (same as service and phantomjs)
* Make sure that original EvalContext is updated after render and upload
* Verify notification sent even if render or image upload times out
* fix lint
* fixes after review
Co-authored-by: Edouard Hur <3418467+hekmon@users.noreply.github.com>
Fixes#21018
* Rename old cascader
* Change name of old cascader
* Add basic cascader without search
* Add basic cascader without search
* Flatten options to make it searchable
* Add regex search and make backspace work
* Add barebone search without styles
* Add SearchResult list
* Add search navigation
* Rewrite of cascader and add some things to SelectBase
* Make SelectBase controlllable
* Cleanup
* Add initial value functionality
* Add onblur to hand caret direction
* New storyboom format for ButtonCascader
* Add knobs to story
* Add story and docs for UnitPicker
* Make UnitPicker use Cascader
* Fix backspace issue and empty value
* Fix backspace issue for real
* Remove unused code
* Fix focus issue
* Change children to items and remove ButtonCascaderProps
* Remove local CascaderOption
* Fix failed test
* Revert UnitPicker changes and change format for ButtonCascader
* Fix failing tests
* Update mac.md
Reviewed and edited macOS install instructions.
* Updated mac.md and configuration.md
Removed developer build instructions from mac.md and moved configuration information from mac.md to configuration.md.
* Update mac.md
Updated to reflect the new fields on the Downloads page
* Update mac.md
* Update mac.md
* wrap content in autosizer
* replace lib
* removing react-virtualized, correct type in editor.ts
* remove caret
* remove dep from grafana/ui and remove story util
* Clarify readme for extended webpack config
* Add support for ES2019 features
* Build task: path.resolve → resolvePath
* Build task: avoid fs race conditions
* Build task: use async fs functions
* Build task: use rimraf directly
... because depending on the workspace parent to have it installed is fragile, and a child process is always slower.
* Build task: misc
* wip: react rewrite
* Cleanup
* Break out non annontations specific fields
* Cleanup. Make annontations editor a functional component
* Remove redundant classnames
* Add paneldata to props
* Cleanup
* Fix rebase merge problem
* Updates after pr feedback
* Fix conflict with master
Adds support for collecting metrics from backend plugins and
exposing them thru Grafana's Prometheus metrics endpoint.
Enables to check health of backend plugin by using the route
`/api/plugins/<plugin id>/health`.
Uses sdk v0.6.0.
Closes#20984
By rotating the auth tokens at the end of the request we ensure
that there is minimum delay between a new token being generated
and the client receiving it.
Adds auth token slow load test which uses random latency for all
tsdb queries..
Cleans up datasource proxy response handling.
DefaultHandler in middleware tests should write a response, the
responseWriter BeforeFuncs wont get executed unless a response
is written.
Fixes#18644
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
#21350 introduced a bug regarding import of plugin dashboards.
This should fix this and add custom validation if not importing
plugin dashboard and dashboard property is missing.
Ref #21350
Co-Authored-By: Arve Knudsen <arve.knudsen@gmail.com>
Breaking change: If disabled the cookie samesite cookie attribute
will not be set, but if none the attribute will be set and is a
breaking change compared to before where none did not render the
attribute. This was due to a known issue in Safari.
Co-Authored-By: Arve Knudsen <arve.knudsen@gmail.com>
Co-Authored-By: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
Fixes#19847
* Fixed so when clicking a plot on a touch device we won't display the annotation context menue.
* Refactorings after feedback.
* changed to standard-ish comment.
* add common backend
* use const for range
* likely not differnt
* send the right orgId
* Add DataSourceWithBackend to @grafana/runtime mock in root reducer test
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
* add min_interval_seconds setting to alerting config
It will let operator enforce a minimum time for the scheduler to enqueue evaluations
* Introduce UI modifications
* Update docs
Co-authored-by: Martin <uepoch@users.noreply.github.com>
* Update rpm.md
* Update rpm.md
* Moved content to troubleshooting
Updated rpm.md and moved content from rpm.md to troubleshooting.md
* Update rpm.md
* Update rpm.md
* Update rpm.md
* Update rpm.md
* Update rpm.md
* Update rpm.md
* Update rpm.md
* Update docs/sources/installation/rpm.md
Co-Authored-By: Dan Cech <dcech@grafana.com>
* Update docs/sources/installation/rpm.md
Co-Authored-By: Dan Cech <dcech@grafana.com>
Co-authored-by: Dan Cech <dan@aussiedan.com>
OpsGenie's model works heavily off of the priority of an alert,
e.g. routing and escalation. Currently this plugin only supports
the default "P3".
Setting a tag og_priority to the correct P-value, e.g. P1, P2, P3,
P4 or P5, will call the OpsGenie API with the correct priority value
set.
Add fallbackText to Google Chat notifications.
Definition of fallbackText: A plain-text description of the message's
cards, used when the actual cards cannot be displayed,
e.g. mobile notifications.
Fixes#21463
* refactoring BigValue layout to use polymorphism
* Renamed file
* StatPanel: Fixed min & max handling, white theme background
* Typescript and test fixes
* Fixed justify center logic
* Updated test dashboard
* Updated test dashboard
* Adjust time xMax to align with last data point if it's close
* Fixed color issue
* removed text shadow
* Removed unused stuff
* Fixed auto min max
* Fixed strict typescript issues
* Updated
* Refactoring to get the correct spacing between the first icon and button border.
* Should not be smaller then 8px to the left.
* Removed unused dependency.
* Updated snapshot for LinkButton.
* remove anon funcs, removed options from state, removed update method, static selects as constants
* cancellable promise
* cancel promise on unmount
* use new datasource funcs for dryer component
* event handler funcs
* updated funcs and moved to utils, updating config editors
* S has no keys. never will never work
* remove report json
* update azure snapshot
* DataSourceSettings keyof
* rename reset funcs
* Update plugin docs
* Updated plugins installation documentation
Moved all Grafana CLI commands into cli.md, moved API script into user.md, rewrote installation.md as an actual task that refers the user to the plugins installation page
* Update cli.md
* Update cli.md
* Update docs/sources/administration/cli.md
Co-Authored-By: Dan Cech <dcech@grafana.com>
* Update docs/sources/administration/cli.md
Co-Authored-By: Dan Cech <dcech@grafana.com>
* Update docs/sources/http_api/user.md
Co-Authored-By: Dan Cech <dcech@grafana.com>
* Update docs/sources/http_api/user.md
Co-Authored-By: Dan Cech <dcech@grafana.com>
* Update cli.md
* Fixed links
* Update cli.md
* Update cli.md
* Update cli.md
* Update cli.md
Co-authored-by: Dan Cech <dan@aussiedan.com>
* Docs: Update debian.md
Simplified the APT install instructions by bundling the commands into one block, added steps in the .deb instructions to refer to new fields on the installation page.
* Update debian.md
* Update debian.md
* Update debian.md
* Update debian.md
* Update debian.md
* Update debian.md
When an alert is sent by e-mail, the process sends an e-mail to
each recipient separately. This PR is a single delivery to all recipients.
For companies that use e-mail extensively, this is necessary in order
not to overload the sending queue.
Replaces #18013Fixes#12650
Co-authored-by: Henrique Oliveira <holiiveira@users.noreply.github.com>
* Settings: supports env overrrides for dynamic settings
* Settings: makes it possible to explicitly get env override support for dynamic settings
* Make linter happy
* Refactor redirect_to cookie with secure flag in middleware
* Refactor redirect_to cookie with secure flag in api/login
* Refactor redirect_to cookie with secure flag in api/login_oauth
* Removed the deletion of 'Set-Cookie' header to prevent logout
* Removed the deletion of 'Set-Cookie' at top of api/login.go
* Add HttpOnly flag on redirect_to cookies where missing
* Refactor duplicated code
* Add tests
* Refactor cookie options
* Replace local function for deleting cookie
* Delete redundant calls
Co-authored-by: Sofia Papagiannaki <papagian@users.noreply.github.com>
Besides minor language corrections, this tries in particular to
provide some clarity about the `step` setting in the Prometheus range
query and the `$__interval` variable:
- First of all: They are both always the same.
- What's really confusing (and arguably really un-helpful) is that the
_Min time interval_ is multiplied by the resolution
factor. Therefore, I just state the fact here now but don't add
anything like "This should be the scrape interval" because it is not
true (if resolution is `1/10`, a meaningful _Min time interval_ is
generally a tenth of the scrape interval).
- More helpful is the _Min step_ parameter, because it is not
multiplied by the resolution factor (which I have now stated
explicitly). Of course, the _Min time interval_ has to be set to
something small so that the _Min step_ parameter can kick in.
It would be good if we could also override the _Min time interval_
tool tip because that is where most people will look, and the current,
very Graphite-centric tool tip is very confusing for the Prometheus
query editor, in particular because it doesn't have any hint about the
resolution factor being applied. See #21413.
Signed-off-by: beorn7 <beorn@grafana.com>
* create tabs component
* replace tabs in pageheader
* splitting two different types of tabitems
* fix index and conditionals in tabs
* redo tabs to not render anchor links
* rename to className and use cx to combine classes
* reverting back to a simpler use case
* moving type to types file
* fix import
* redoing Tabs to simpler composition components
* pr feedback
* update snapshot
* use icon component, added knob for storybook
* Added text align option to column styles, tests
* table panel migrations
* added tests
* default column style is now auto
* tests and fixtures...
* wrong comments need removing
* xss guard
* test
* Some test for invalid options, formatting.
* Remote branch tracking.
* Footer: Single footer implementation for both react & angular pages
* Export type
* Updates
* Use footer links in help menu
* Updates & Fixes
* Updated snapshot
* updated snapshot
* added alert state validation before changing its state
* modified boolean condition
* converted most occurring string into const
* referred the const of alert models
* Prometheus: user metrics metadata to inform query hints
- no longer analyse datapoints
- either use metrics metadata to determine metrics type or use metric
name suffix
- removed testcases based on datapoints
* Added hint certainty and tests
* Prometheus: Disable suggestions at beginning of value
- fixed comparison operator regex
- no longer suggest anything at beginning of label value
* Detect cursor in front of label values
I standardized the readme for `sudo` and removed the `$`.
Now you can copy paste the commands and just "install" via the rpm
based distros.
Signed-off-by: JJ Asghar <jjasghar@gmail.com>
Signed-off-by: JJ Asghar <awesome@ibm.com>
* imguploader: add support for non-Amazon S3 endpoints and forcing of path-style S3 addressing
fixes#11240
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* Loki: fix filter expression suggestions
- dont suggest term completion items in filter expression
- allow at least one character before suggesting term items
- keep logql expression when switching between Metrics/Logs mode
- show only history by default in completion items
* Clear results when changing mode
- `unless`, `or` and `and` are binary operators
- if they appear in a query the query was broken up so the suggestor
only works on the current term
- this change fixes the splitter logic to make sure those keywords are
not inside a word
* Edited Windows install instructions
Moved one section from Windows install guide to developer-guide.md. Edited some content in windows.md and will add questions.
* Updated per comments
* Fixed broken links in basic_concepts.md
* Revert "Fixed broken links in basic_concepts.md"
This reverts commit e524ea9e7b.
* Update windows.md
* Prometheus data source: Update tooltip for _Scrape interval_
The old tool tip was plainly wrong. The globally configured scrape
interval is not necessarily the most used scrape interval, so the new
wording is describing what actually matters. The evaluation interval
wasn't even mentioned before. And finally, the configured value is
not strictly a lower limit for the step query parameter as it can be
overridden by the panel option _Min time interval_.
I plan to explain the overriding intricacies in the tool tip for _Min
time interval_.
Signed-off-by: beorn7 <beorn@grafana.com>
* Improve tooltip for _Min step_
The previous tool tip was mostly addressing aspects that are not
specific to _Min step_ (and might be more appropriate to be added to
the _Min time interval_ tool tip as that setting has a wider
scope). The new version emphasizes the important gotchas: that this is
an _additional_ lower limit, and that it is _not_ multiplied by the
resolution factor.
Signed-off-by: beorn7 <beorn@grafana.com>
* Fixed snapshot
Co-authored-by: David <david.kaltschmidt@gmail.com>
Closes#19598
Fixes bug introduced recently where the new PromQueryEditor did not preserve
the PromContext.Explore set on the query model by PromQueryField which caused
the table to be empty for Prometheus in explore.
* Pagerduty notifier: configurable severity
Instead of hardcoding `critical` make it configurable per notification channel instance.
* fix html
* Add a test to ensure default severity is correct
* Notifications doc
* Add a non-default test
* Add err check on NewJson (all tests)
* Add default severity (critical) to AlertNotificationEditCtrl class
- prometheus explore editor introduced new styles for the hint display
- when multiple rows are rendered the hints are covered because they are
forced to have 0 height
- this change removes the 0-height
* Editor: Ignore closing brace when it was added by editor
- brace completion gets annoying if the user still types closing brace
- this change marks automatically added closing braces and when the user
types a closing brace at that position, it will be overridden instead of
added
* Fix label suggestions
* Correct brace behavior, but broken completion
* Rewrite auto-match detection with annotations
Much easier to wrap one's head around it if it is expressed more
directly.
This is not mathematically the same as the previous version involved
more rounding than necessary because of the way the intervalFactor was
handled. I'd argue the new version is better because it gets closer to
the 11,000 points limit and thus approaches better what the user
wanted within the limits of Prometheus.
Note that in practice, the 11,000 points limit should never be of
relevance. (Even a 4k screen doesn't have 11k points on the x axis.)
Signed-off-by: beorn7 <beorn@grafana.com>
* Table: Set & use field display processor
* Use applyFieldOverrides outside in story instead
* Change types a bit
* Table: Move to flexible layout
* Simplest possible custom field option
* Skip default column
* Added textAlign
* Explore: Set display processor for table data frame
* Fixed storybook
* Refactoring
* Progress on cell display mode
* Major progress
* Progress & refactoring
* Fixes
* Updated tests
* Added more tests
* Table: Progress on cell style customization
* Restored testdata random walk table scenario
* put back unrelated change
* remove unused things
* Updated table story
* Renamed property
Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
* Dashboard: started to implement new time picker.
* TimePicker: working in full screen (except calendar).
* TimePicker: first draft on narrow screen variant.
* TimePicker: small adjustments to the narrow design.
* TimePicker: enabled range selection and started to style calendar.
* TimePicker: applied some more styling.
* Calendar: added so the calendar range selection is styled properly.
* Calendar: added styling for timepicker calendar in narrow screen.
* TimePicker: made it possible to select range from calendar.
* TimePicker: made the calendar have previous selected value.
* TimePicker: moved calendar to be able to update form state.
* TimePicker: calendar is now displayed onFocus or onClick.
* TimePicker: calendar will be closed if click outside input.
* Calendar: fixed the styling of the calendar in narrow screen.
* Calendar: made it work properly with narrow screen.
* TimePicker: connected recent to absolute time range.
* TimePicker: changed the label on recent ranges.
* TimePicker: cleaned up the range list and options.
* TimePicker: some more cleaning up.
* TimePicker: cleaned up the calendar a bit.
* TimePicker: some more refactorings.
* TimePicker: refactorings.
* TimePicker: styled modal properly.
* TimePicker: empty recent list.
* TimePicker: width when calendar in full screen.
* TimePicker: will validate input value.
* TimePicker: removed unused code.
* TimePicker: positioning with emotion instead of sass.
* Calendar: Made sure we send the dates in the correct order to the calendar.
* TimePicker: fixed theme.
* TimePicker: fixed positioning of the content.
* TimePicker: positioning of narrow.
* TimePicker: added some simple tets.
* TimePicker: fixed issue with invalid and added error message.
* TimePicker: added history.
* TimePicker: cleaned up snapshot data.
* TimePicker: fixed so we keep the quick values in the input.
* TimePicker: fixed the missing styling on UTC.
* TimePicker: added missing caret icon.
* TimePicker: fixed formatting on recent time ranges.
* TimePicker: added missing -.
* TimePicker: refactorings after feedback.
* TimePicker: renamed reserved prop name.
* TimePicker: added missing onChange call.
* TimePicker: removed alternative return type.
* TimePicker: fixed the sorting order on the recent list.
* TimePicker: added useCallback for the onEvent functions.
* TimePicker: moving away from default export.
* TimePicker: used the isMathString instead of private function.
* TimePicker: minor refactoring simplify the code.
* TimePicker: Added empty container that will expand when less then 4 recent searches.
* TimePicker: changed the top to be absolute relative to the container.
* TimePicker: updated snapshots for failing tests.
* Fixed shadow
* Move it down a bit
* added some more tests.
* Fixed so we change the anchor point of the time picker in really small screens.
* removed memo.
* fixed snapshot.
* Make sure that we always use the correct timeZone when formatting output.
* Fixed form background.
* Some minor fixes after demo.
* Making sure that empty info box is centered.
* updated snapshots for timepicker after css changes.
* fixed so we don't overflow when input validation error.
* adjusted final things on the time picker.
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
* Tooltip: preventing xss injections via the colors variable.
* added xss check for single series tooltop color.
* added sanitize to the hoverInfo.value.
* first working example
* Support sorting, adding types while waiting for official ones
* using react-window for windowing
* styles via emotion
* sizing
* set an offset for the table
* change table export
* fixing table cell widths
* Explore: Use new table component in explore (#21031)
* Explore: Use new table component in explore
* enable oncellclick
* only let filterable columns be clickable, refactor renderrow
* remove explore table
* Keep using old merge tables logic
* prettier
* remove unused typings file
* fixing tests
* Fixed explore table issue
* NewTable: Updated styles
* Fixed unit test
* Updated TableModel
* Minor update to explore table height
* typing
* Refactor: Adds params to visit
* Refactor: Restructures exported Pages somewhat
* Refactor: Moves more into new framework but holdup because of bugs in digest
* Refactor: Finish migrating templating e2e tests to new framework
* Refactor: Changes after merge with master
* Refactor: Removes weird change
* Refactor: Adds duplication test
* Refactor: Adds move down and move up variable asserts
* Refactor: Adds some test to value select dropdown
* Prometheus: Display HELP and TYPE of metrics if available
- Prometheus recently added a metadata API around HELP and TYPE of
metrics
- request metadata when datasource instance is created
- use metadata to show help and type in typeahead suggestions and in
metrics selector as tooltip
* Fix types
* Refactor: Adds ScenarioContext
* Refactor: Removes async
* Refactor: Adds video and reverts CIRCLE_SHA2 to CIRCLE_SHA1
* Refactor: Adds videos to release job as well
* use default from datasource if not saved on dash/query
* find datasource default workspace in returned workspace list
* don't need the find
* fix dropdown
* UI: ConfirmButton component
* UI: add link button variant
* UI: add ConfirmButton story with delete option
* Chore: use ConfirmButton instead of DeleteButton
* UI: remove DeleteButton
* UI: rename confirmButtonVariant to confirmVariant
* UI: use Form.Button in ConfirmButton
* Chore: use sm ConfirmButton size after changing defaults
* Revert "UI: add link button variant"
This reverts commit 4372350daa.
* Chore: add 'link' variant type to the Button
* UI: DeleteButton component on top of ConfirmButton
* Chore: use DeleteButton instead of ConfirmButton
* Chore: DeleteButton, use md size by default
* Chore: update test snapshots
* Update configuration.md
Updated logs section and clarified some of the file location and commenting information.
* Update docs/sources/installation/configuration.md
Co-Authored-By: Marcus Efraimsson <marcus.efraimsson@gmail.com>
Removes send_client_credentials_via_post oauth setting and
use auto-detect mechanism instead.
By these changes also fixes statichcheck errors
Ref #8968
* feat: adding lookup limit to OpenTSDB settings
Adding lookup to OpenTSDB datasource settings and using it in the datasource for tag value lookup and suggest
* Document the change.
* feat: UI for configuring OpenTSDB lookup limit.
* Apply prettier.
* Fix compilation error.
* Logs: Optional logs label column
- reintroduces label column that was removed when log details were
introduced
- added to explore and also as a new option to logs panel
- explore column settings now stored in localstorage
- labels are rendered with font size xs
- labels that start with `_` or are called `level` or `filename` are not
displayed
- removed click handlers and moved remaining `LogLabel` logic into `LogLabels`
* Added prop to satisfy interface
* Review feedback
* removed comment
* Changed label of label column switch
Moving info log from phantomjs to rendering service
so it's logged for all kinds of renderers.
Add debug log for image renderer plugin and remote
renderer.
* Add support for primitive values/onchange
* Fix segment clickaway bug
* Fix onchange
* Use primitive in cloudwatch
* Add placeholder
* Use placeholder in cloudwatch editor
* Fix lint error
* Fix lodash import
* Use new component story format
* Add support for autofocus
* Use selectable value for onchange event
* Fix lint error
* UI: ConfirmModal component based on Modal
* UI: refactor ConfirmModal after Modal changes
* UI: use Icon component for Modal
* UI: ConfirmModal tests
* UI: ConfirmModal story
* Prometheus: disable dynamic label lookup on big datasources
- when a prometheus datasource has more than 10000 metrics, label lookup
for the query field is disabled
- installations of that size have slow typehead lookup times and make
the editor sluggish
* Raise dynamic lookup threshold to 10000 metrics
* Run start tasks again
- since the API update, the URL fallback was working, but the response
format also needed adapting: `data` (v1) vs `values` (pre-v1)
- this change looks for either data or values in the response for test
and metadata requests
* Update debian-ubuntu installation
Major rework of debian.md, minor updates to a configuration.md and upgrading.md.
* updated docs
Updated per Torkel's comments
* Update debian.md
Added wget to common properties install command
* Update docs/sources/installation/debian.md
Co-Authored-By: Dan Cech <dcech@grafana.com>
* Update docs/sources/installation/debian.md
Co-Authored-By: Dan Cech <dcech@grafana.com>
* Update docs/sources/installation/debian.md
Co-Authored-By: Dan Cech <dcech@grafana.com>
* Update docs/sources/installation/debian.md
Co-Authored-By: Dan Cech <dcech@grafana.com>
* Update docs/sources/installation/debian.md
Co-Authored-By: Dan Cech <dcech@grafana.com>
* Update docs/sources/installation/debian.md
Co-Authored-By: Dan Cech <dcech@grafana.com>
* Update docs/sources/installation/debian.md
Co-Authored-By: Dan Cech <dcech@grafana.com>
* Apply suggestions from code review
Co-Authored-By: Dan Cech <dcech@grafana.com>
* Update upgrading.md
* Update upgrading.md
* Update debian.md
Added ARM link
Updates the docs to work with the website repo - mainly
relative link updates.
Adds a menu.yaml file to build the sidebar menu (no longer
using front matter weight).
* Chore/Tech debt: Remove (most) instances of $q angular service use
Removes instances where the angular $q service is used and replaces
it with native Promises.
* FieldDisplay: added support for value mapping of no data state.
Committer: Marcus Andersson <marcus.andersson@grafana.com>
* FieldDisplay: fixed issue when switching between modes and display numeric was null.
* ValueMapping: introduced a private function for checking null values.
* FieldDisplay: refactoring of test setup to reduce duplication.
* Docs: added info about new 'no data' value to text mapping.
* Docs: improved according to feedback. Reverted prettier formatting changes.
* FieldDisplay: removed unused import.
* Datasource/Loki: Fixes issue where time range wasn't being supplied with annotation query
Closes#20667
* Add test to verify new behavior
* Added end/start check to test
* update fixed
* update fixed
* update fixed
* don't change any tests
* add mising space
* Custom unit formats
* return a string for kbn
* return a string for kbn
* return a string for kbn
* Simplify unit tests
* More units
* fix more tests
* fix more tests
* fix more tests
* format values
* format values
* TimeSeries to string
* more kbn tests
* use the formatted value
* BarGauge: Fixed font size calculations
* support prefix
* add si support
* avoid npe
* BarGauge/BigValue: value formatting
* fix some tests
* fix tests
* remove displayDateFormat
* another unicode char
* Graph: Use react unit picker
* Updated unit picker
* Fixed build errors
* more formatting
* graph2 tooltip formatting
* optional chaining
* TablePanel: Don't include hidden columns in CSV export
Fixes#12076
* GraphPanel: Don't include hidden series in CSV export
Series are hidden if all values are zero/empty and the relevant graph
option is enabled as well. (e.g. "Hide series: With only nulls")
Fixes#12076
* adding configeditor
* fix method signature and add state for metrictankhelper
* fix onChangeHandler
* prettier fix
* remove config and fix autoversion
* adding optional parameter to make this build
* set default version if none specified
* Graphite: removed version detection
* Adding component, story and documentation file
* forgot files
* Add label and formvalidation
* fix for error/invalid message
* fixing font color when input is disabled
* red border if invalid
* fixing props and label margin
* added support for icon in input
* support for button and loading state
* redoing some of the markup
* fixing height on addons
* Adding some basic documentation
* remove not used types file
* Add some more knobs
* move component to it's own directory, updated styling
* create component and extract some shared styles
* update story name
* Adding focusstyle and knobs
* Sorting knobs, fix paddings
* accidentaly put in a line break
* use variable names in commonStyles
* add simple mdx docs
* Adding size to TextArea
* more shared styles
* remove unused import
* Units: Add unit for currency - South Korean Won
* Units: Add support for 'femto' and 'pico' decimal SI prefix
* Units: Expand library of energy units
Add:
Power - Giga-watt (useful for viewing metrics of power flow through large-scale electrical infrastructure)
Electrical Resistance - Kilo-ohm, Mega-ohm (useful for viewing metrics of energy storage e.g. internal resistance of a battery and more)
Electrical Capacitance - Farad, Micro-farad, Nano-farad, Pico-farad, Femto-farad
Electrical Inductance - Henry, Milli-henry, Micro-henry
* Units: Add unit test for currency ₩
* Units: Add unit tests for energy units
* Loki: Fix query error for step parameter
- Loki does not fully support float steps like prometheus and returns a
query error
- this change makes sure that the step parameter is rounded to an
integer
* Added test and comments
* Panels: Added support to set panel padding to zero
* WIP: fullChromeControl work
* Tweaks to header position
* Reverted some overlay mechanic and now back to no title only
* Fixed test
* Fixed transparent flag
* Added show title
* Added font weight to value
* Reverted back to no padding option
* Fixed issue with border and width and height
* Introduce new Switch component
* Experiment with different focus style
* Review update
* Update on/off swtch colors
* Introduce Form.Field component
* Enable className prop on form's field
* Remove not used imports
* Update packages/grafana-ui/src/components/Forms/Field.tsx
Co-Authored-By: Peter Holmberg <peterholmberg@users.noreply.github.com>
* Make switch usable in field story
* Add predefined input sizes
* Add util to display story on a debug canvas
* Test form
* Updated the test form
* Fix snapshot
Profiling and tracing can now be enabled/disabled separately.
Adds argument for trace file path.
Support overriding profiling and tracing argument using
environment variables.
Update docs.
Fixes#20576
* Add Service Quota part
* Update docs after pr feedback
* Describing new features
* Divide into subheaders
* Changes after feedback
* cloudwatch: add min time interval section to docs
* docs: json format fix
* cloudwatch: move min time interval section in docs
* cloudwatch: docs fix
* docs: cloudwatch fixes
* docs: s/you are/you're
* docs: Cloudwatch - escapes underscores in tables
Adds support for using custom dockerfiles to pre-install image
renderer plugins.
Updates docs for docker and image rendering.
Fixes#20241
Co-Authored-By: Leonard Gram <leo@xlson.com>
* refactor to multiple rows
* added name for org user struct
* added name getorgusers
* added user name to tableview
* made test pass
* updated userMocks to user name field
* added missing UsersTable snapshot
* added name on teammembers page, be able to search query for name, login and email
* added the updated snapshots
* conform to same sorting as output form
* conform to previous way of using it
* sort first by login and after by email, as it was before
* Adding cloudwatch related stuff - images will come later on
* Changes after pr feedback
* Add images
* Update image path
* Remove react migration part - might not be so interesting for our users
* Removing part about curated dashboards since it's not released yet - will be re-added later on
Backend plugins is recommended to use hclog with json
formatting to get proper log output in grafana server log.
Old hclog-wrapper.go that I deleted while back is still in
the repo so deletes that.
* Remove highres flag since it's not being used
* Remove not used code. Init id field correctly
* Fix broken tests
* Remove GMS related calculations
* Rename period field
* Add breaking changes to changelog. Also update upgrading docs
* Update snapshot
* Update docs after feedback
* Changes after feedback
* Adding component, story and documentation file
* forgot files
* Add label and formvalidation
* fix for error/invalid message
* fixing font color when input is disabled
* red border if invalid
* fixing props and label margin
* added support for icon in input
* support for button and loading state
* redoing some of the markup
* fixing height on addons
* Adding some basic documentation
* remove not used types file
* Add some more knobs
* move component to it's own directory, updated styling
* Adding component, story and documentation file
* forgot files
* Add label and formvalidation
* fix for error/invalid message
* fixing font color when input is disabled
* red border if invalid
* fixing props and label margin
* added support for icon in input
* support for button and loading state
* redoing some of the markup
* fixing height on addons
* Adding some basic documentation
* remove not used types file
* Add some more knobs
* move component to it's own directory, updated styling
* Add Icon component
* Add useClientRect helper hook
* Add missing Icon types
* Simplify Inputs styling (POC)
* Render theme knob in a separate group
* Update packages/grafana-ui/src/components/Forms/Input/Input.tsx
Co-Authored-By: Peter Holmberg <peterholmberg@users.noreply.github.com>
* Update packages/grafana-ui/src/components/Forms/Input/Input.tsx
* Improve comment
* Restore increase/decrease spinner on number inputs
* Add period
* use input color variables
* fix test
* Expose input styles from getFormStyles
* grafana/build-container: Upgrade to Ubuntu 18.04 base image
* grafana/build-container: Upgrade to Go 1.13.4
* grafana/build-container: Upgrade to Node 10.17.0
Problem was that yaml unmarshal returned nested maps as
map[interface{}]interface{} which are then not marshal-able
to json because of that interface{} key type. This adds explicit
casting of the keys in the yaml value types to string which
then makes the values marshal-able to JSON in DB.
Fixes: #11537
* Fix integration of postgres and fake-data-gen containers
This fix introduces the following modifications:
- Upgrades to 2.1 docker-compose file format
- Adds a health check for determining that postgrestest service is healthy
- Modifies the fake-postgres-data service to wait for postgrestest to be
"healthy" before starting.
- Renames postgrestest to postgres
* Util: Optionally allow empty input in SplitHostPortDefault
Due to a recent change the SQL Server tests failed because passing an
empty datasource url in `util.SplitHostPortDefault` was no more allowed.
This fix contains the following modifications:
- Modifies the util.SplitHostPortDefault not to return an error for empty input.
- Modifies the util.SplitHostPort to return an error for empty input.
- Introduces an additional test for empty input.
* convert config editor to react
* tests and some cleanup
* test
* snaps
* updating per comments
* remove anonymous funcs, remove config from state
* remove unecessaries
* Grafana/Loki: Adds support for new Loki endpoints and metrics
* Adds `/loki/` prefix to new loki endpoints and updates response interfaces
* Improved legacy support
* Removed changes related to plugin.json and added Loki-specific hacks
* Fixes live streaming for legacy loki datasources
The ordering of links in the navigation bar is currently based the order of the slice containing the navigation tree. Since Grafana supports adding more links to the navigation bar with `RunIndexDataHooks` which runs at the very end of the function this means that any link registered through a hook will be placed last in the slice and be displayed last in the menu. With this PR the ordering can be specified with a weight which allows for placing links created by extensions in a more intuitive place where applicable.
Stable sorting is used to ensure that the current FIFO ordering is preserved when either no weight is set or two items shares the same weight.
* Chore: Move and wrap Cascader component to @grafana/ui
Closes#19042
* Removes unneeded props from interface and removes rc-trigger
* Removes more unneeded props
* CloudWatch: Datasource improvements
* Add statistic as template variale
* Add wildcard to list of values
* Template variable intercept dimension key
* Return row specific errors when transformation error occured
* Add meta feedback
* Make it possible to retrieve values without known metrics
* Add curated dashboard for EC2
* Fix broken tests
* Use correct dashboard name
* Display alert in case multi template var is being used for some certain props in the cloudwatch query
* Minor fixes after feedback
* Update dashboard json
* Update snapshot test
* Make sure region default is intercepted in cloudwatch link
* Update dashboards
* Include ec2 dashboard in ds
* Do not include ec2 dashboard in beta1
* Display actual region
* LDAP: last org admin (that's going to be removed) can login
Previously, if you tried to login with LDAP but were that last org admin
of an org that you would no longer be an admin of after sync (which
happens at login), you wouldn't be able to login due to an error.
* Docker blocks: Add loki blocks for loki releases
- Loki did major API changes between 0.3 and 0.4
- Adding blocks to simplify Grafana datasource testing for different
versions
- keeing `loki` block pointing at loki master
- Run all versions in parallel:
```
./create_docker_compose.sh loki0.3 loki0.4 loki
```
- all versions have different hostnames and ports internally
- datasource url depends on version so you can set them up as separate
datasources:
- master: http://localhost:3100/
- 0.3.0: http://localhost:3103/
- 0.4.0: http://localhost:3104/
* Add loki minor version datasources
Adds a new setting disable_admin_user and when true the default
admin user will not be created when Grafana starts for the first
time (or no users exists in the system).
Closes#19038
* metric tank meta
* add metric tank info
* fixed info box
* process meta
* attach metrictank meta to response
* remove extra logging
* response is now DataFrame
* Minor refactoring and renaming of the prop
* Graphite: minor fixes
* add dependencies to support oracle plugin in alpine
* fix typo
* add generated docker image for PR to artifacts to make testing easier
* update path to artifact
* debug path to artifact
* debug path to artifact
* debug path to artifact
* fix ld.so.cache conflict
* only add glibc-compat for x86_64 builds
* do not store docker image in artifacts
* fix missing fi
* Panel: fix the default value of thresholds cannot be modified in Gauge panel
* Panel: fix the default value of thresholds cannot be modified in Gauge panel
* AuthProxy: Can now login with auth proxy and get a login token
* added unit tests
* renamed setting and updated docs
* AuthProxy: minor tweak
* Fixed tests and namings
* spellfix
* fix
* remove unused setting, probably from merge conflict
* fix
The arching goal of this commit is to enable single user
synchronisation with LDAP. Also, it included minor fixes of style,
error messages and minor bug fixing.
The changes are:
- bug: The `multildap` package has its own errors when the user is
not found. We fixed the conditional branch on this error by asserting
on the `multildap` errors as opposed to the `ldap` one
- bug: The previous interface usage of `RevokeAllUserTokens` did not
work as expected. This replaces the manual injection of the service by
leveraging the service injected as part of the `server` struct.
- chore: Better error messages around not finding the user in LDAP.
- fix: Enable the single sync button and disable it when we receive an
error from LDAP. Please note, that you can enable it by dispatching
the error. This allows you to try again without having to reload the
page.
- fix: Move the sync info to the top, then move the sync button above
that information and clearfix to have more harmony with the UI.
* Elasticsearch: Support rendering in logs panel
- add "Logs" metric query type so panels can inform the datasource that
the query is a logs query
- datasource modifies target when metric query type `logs` is detected
- then existing log result processeing paths are followed
* Fix failing test, number of agg types changed
* Renamed ttl config in code to be more consistent with behaviour
* Introduced new setting `sync_ttl` in .ini file
* Keeping the old setting `ldap_sync_ttl` in the .ini file as fallback and compatibility.
* Adding grafana plugin version info
It was unclear if one can specify the plugin version to the environment variable. It is possible and works fine. Added it to the plugin information.
* Update typo docs/sources/installation/docker.md
* Applied all comments
Moved the information to make it more readable, fixed typos and added missing punctuation.
* Rewording and better example
More feedback, added example text. Did not manage to get newline for the example.
* added the missing space
assumption is that msi MAX_PATH is effectively 130 (260/2) for the full path of the filename (Dir + filename), and this causes error LGHT0103 : The system cannot find the file in the msi build.
* Explore: fixes toolbars datasource selector and date picker responsiveness
* Explore: updates grafana UI time picker component - adds a class on long date
* Explore: updates styles for responsive long date without split
* Explore: adds styles for responsive time picker with long date during split
* Explore: updates long datetime detector to isDateTime, renames isAbsolute to hasAbsolute
* Explore: updates datasource responsiveness
* Explore: moves time picker styles
* Explore: updates datasource picker and select component responsiveness
* Explore: updates data source picker
* Explore: updates explore toolbar to use container width
* Explore: updates styles for datasource picker
* Explore: updates Grafana UI elements - select and single value with an ability to hide text
* Explore: updates time picker styles
* Explore: updates datasource select and date picker
* Explore: updates toolbar elements margin
* Explore: updates toolbar elements split breakpoints
* Explore: updates datasource picker label length with substrings
* Explore: updates the datasource picker label length
* Explore: removes refresh picker hide media query
* Explore: updates refresh picker style query to use xs breakpoint
* Fix: Prevents crash when table receives mixed data formats
Fixes#20075
* Tests: Adds tests for data format reducers
* Refactor: Updates after PR comments
* Refactor: Missed a couple of places where filtering was needed
Adds a config section with derived fields which is a config that allows you to create a new field based on a regex matcher run on a log message create DataLink to it which is the clickable in the log detail.
As discussed in a UX feedback session, it's annoying that queries are
automatically executed in Explore. This change adds props to override
the blur behavior.
- add `onBlur` to Explore query field props
- Explore's query row will pass down an empty function for onBlur to the
query fields
- pass onBlur through to the QueryField component for Loki and
Prometheus
- add test to QueryField to make sure if onBlur is specified, the
onRunQuery is not executed
* fix subscriptions getting, move subscriptions and workspace fetching into react
* config typed
* moved ConfigEditor to components, parser for select objs
* AzureDataSourceSettings type on state
* typing datasource
* SafeDynamicImport: Fixes so that it shows different messages depending on error
* Refactor: Fixes type error
* Refactor: Adds grafana constant to error message
* Refactor: Renames components and adds exports
* Refactor: Uses react-loader instead
* Refactor: Updates after PR comments
* Tests: Adds tests for loadComponentHandler
* Enable display processor on time fields
* Export default date time formats from grafana/data
* Add data time formatter for timezone
* Move date format from display process options to field config
Adds support for Generic OAuth role mapping. A new
configuration setting for generic oauth is added named
role_attribute_path which accepts a JMESPath expression.
Only Grafana roles named Viewer, Editor or Admin are
accepted.
Closes#9766
* Docs: Add additional capitalization rules
What this PR does / why we need it:
This updates the Documentation style guide to include more details on the capitalization rules. Capitalization rules get confused easily, especially between terms like Dashboards (menu title) and dashboards (plural).
Which issue(s) this PR fixes:
No fix, just an addition.
* Revert "Docs: Add additional capitalization rules"
This reverts commit 75cbc6303c.
* Docs: Docs: Add additional capitalization rules
* Docs: Simplify headings and make active #19268
Multiple local files copied to same destination in one COPY instruction in 0th build container. PATH env variable is modified using the default PATH env variable available in alpine container to achieve the same effect.
* Fix: Fixes searchfilter wildcard char in regular expressions
Fixes: #20006
* Refactor: Uses TemplateSrv and ScopedVars instead
* Docs: Updates docs with new format
* Tests: Corrects test description
* LDAP Debug: No longer shows incorrectly matching groups based on role
Org Role was used as a shortcut to figure out what groups were matching
and which weren't. That lead to too all groups matching a specific role
to show up for a user if that user got that role.
* LDAP Debug: Fixes ordering of matches
The order of groups in the ldap.toml file is important, only the first
match for an organisation will be used. This means we have to iterate
based on the config and stop matching when a match is found.
We might want to think about showing further matches as potential
matches that are shadowed by the first match. That would possibly make
it easier to understand why one match is used instead of another one.
* LDAP Debug: never display more than one match for the same LDAP group/mapping.
* LDAP Debug: show all matches, even if they aren't used
* Update public/app/features/admin/ldap/LdapUserGroups.tsx
Co-Authored-By: gotjosh <josue.abreu@gmail.com>
* Update public/app/features/admin/ldap/LdapUserGroups.tsx
Co-Authored-By: gotjosh <josue.abreu@gmail.com>
* Licensing: supplies a service to handle licensing information
* Licensing: uses the license service further
Uses the license service instead of settings.isEnterprise:
- external team members
- saml
- usage stats
* Licensing: fixes broken tests due to new Licensing service dependency
* Licensing: fixes linting errors
* Licensing: exposes license expiry information to the frontend
* basic setup
* onclose fix
* styling and inline drawer
* add options and mdx
* remove blank line
* disable pushing page when opening drawer, re add mask opacity
* small fixes from pr review
* Add knobs and story with long content
* set redone markup and made title sticky
* Minor style update
* Minor style updates 2
* More explicit width prop
* fix import
* Dependency: Bump our SAML Library to the latest version
Fixes a non-obligatory check for RSA encrypted assertions. Previously they required a certificate embedded in the assertion, this is not mandatory according to the SAML standard.
Add LogDetail section that is shown when log line is clicked and expanded. Contains labels/fields and actions to show stats and add/remove label filter.
In the data sources docs two similar subsection names were used.
This PR renames `Adding the data source to Grafana` subsection to
`Adding data source` so that all data sources have the same
subsection name.
* Add docker-compose example for running grafana with remote renderer
* Update docs/sources/administration/image_rendering.md
Co-Authored-By: Marcus Efraimsson <marcus.efraimsson@gmail.com>
Update Azure AD instructions to follow heading changes in Azure Portal.
> In the legacy experience, an app had Keys page. In the new experience, it has been renamed to Certificates & secrets. In addition, Public keys are referred to as Certificates and Passwords are referred to as Client secrets.
Source: https://docs.microsoft.com/en-us/azure/active-directory/develop/app-registrations-training-guide#keyscertificates--secrets
I verified by logging in Azure AD and walking through the steps.
* Refactor: Adds typings and changes AdHocVariable to conform to new typings
* Refactor: Adds typings to ConstantVariable
* Refactor: Adds typings to IntervalVariable
* Refactor: Adds typings to QueryVariable
* Refactor: Adds typings to TextBoxVariable
* Refactor: Adds typings to CustomVariable
* Explore: Remove datasource testing on selector
- datasource testing gets in the way of fast query iteration: switching
between datasources can take seconds
- it should not be explore's duty to test datasources in the first place
- removed the concept of datasourceError in Explore, should not be its
concern
- datasource erorrs will express themselves in query errors just fine
- connection errors are still bubbled up
- removed reconnection logic from explore, should not be its concern
- missing labels in loki are still "visible" via an empty label selector
- Loki and Prometheus treated connection errors differently than other
datasources, making sure to pass through the original error message
* Show datasource error in query field for prom/loki/influx
* Removed connection test case, fixed disabled state
* Implement Label component
* Expose next-gen form components from grafana-ui under Forms namespace
* adding knobs to story, setting new variants and sizes
* handle next gen button in their own component
* removing duplication
* fix Thresholds test
* removing blank lines
* moving noUnusedLocals
* new button should not need theme
* remove not used export
* pseudo classes for focus state
* remove not used things
* use correct border radius
* extracting focus styles to commonStyles for reuse
* tidying up getButtonStyles
* Adding a few examples to the doc
* Adding props table
* build: Install musl cross compilers as part of build Docker image
* build: Build also musl packages in scripts/build/build.sh
* scripts/build/build-all.sh: Build musl Linux targets
* build: Upgrade build-container to 1.2.11
* build.go: De-duplicate code
* build: Base Docker images on musl binaries
* Making flowchart work
* Enable testEnvironment jest option
* Add babel-jest to grafana-toolkit
* Fix test
* Resolve either js or ts jest setup files
* Update packages/grafana-toolkit/src/config/jest.plugin.config.ts
* Update packages/grafana-toolkit/src/config/webpack.plugin.config.ts
* Implement Label component
* Expose next-gen form components from grafana-ui under Forms namespace
* Minor Label update
* Add Legend component
* Test form story
* Expose Legend class name via getFormStyles
* Test
* FieldValidationMessage spacing
* Expose FieldValidationMessage styles via getFormStyles
* Update snapshot
* Make it clear that role switching is not supported
* Update docs/sources/features/datasources/cloudwatch.md
Co-Authored-By: Marcus Efraimsson <marcus.efraimsson@gmail.com>
* Bump storybook to 5.2.4
* Update yarn.lock
* Babel bump
* Add core-js 2 to dev deps for babel to resolve dependencies correctly
This is because storybook 5.2 introduced core-js 3.x which caused babel to have problems resolving core-js dependencies
* Basic components for HTTP settings migration WIP
* Add secureJsonFields to DataSourceSettings
* Introduce datasource-http-settings-next directive for backward compatibility
* fix lint
* renames
* rename fix
* TagsInput component
* move tags from app to grafana/ui
* implement tagsinput on datasourcesettings
* capitalize
* new file for react directive for testing
* some layout touch ups
* FormField story
* Minor touch ups
* add url validation
* using prevent default to prevent updating datasource when adding tag
* using Stylefactory and fix tslint issue on MouseEvent
* only show tlsauthsettings if tls or ca cert
* fix url input length
* fix for showAccessOptions
* Implemented CertTextArea, removed commented code
* removed commented / not used code
* Rename and add more elements to Certification component
* fixing newSecureJsonData
* spelling
* Fix issue with checkboxes being undefined
* Removed old partials and minor fix
* removed unused props from story
* WIP: Initial hardcoded version
* Feature: Introduces SearchFiltering to Graphite
* Feature: Adds searchFiltering to MySql
* Tests: Adds tests to Graphite and MySql
* Feature: Adds $__searchFilter to TestData
* Refactor: Adds searchFilter to Postgres and extracts function
* Tests: Adds tests to variable
* Refactor: Adds debounce and lodash import optimization
* Docs: Adds documentation
* Refactor: Removes unused function and fixes typo
* Docs: Updates docs
* Fixed issue with UI not updating when no was used due to async func and no .apply in the non lazy path
This is useful when working with backend plugins and grafana at the same time. Makes it so Grafana has a chance to shutdown the external process. An os.Interrupt signal is first sent, then after a five second wait a a force kill will be sent if the process is still running.
* build: update scripts go.(mod|sum)
* build: exclude gosec rule G108
Gosec rule G108: Profiling endpoint automatically exposed on /debug/pprof
is not applicable since we only enable /debug/pprof endpoint if -profile
flag is provided when starting grafana.
Fixes so that all notification channels configured for an alert should
try to send notification even if one notification channel fails to send
a notification.
Signed-off-by: Abhilash Gnan <abhilashgnan@gmail.com>
Fixes#19768
* pkg/cmd: Check errors
* pkg/cmd: Make sure server waits on services, even in case of error
* pkg/cmd: Inform of error to show help
* pkg/cmd: Only warn on failure to send systemd notification
* pkg/cmd: Don't log errors stemming from context cancelation
* pkg/cmd: Don't fail if unable to write to systemd
It is now possible to specify a field containing time-end in
Elasticsearch annotations.
Any annotations with a time-end will become a region between
time and time-end. Any annotations without the time-end field
will remain a single-point annotation.
Ref #10589
* Docs: Add additional capitalization rules
What this PR does / why we need it:
This updates the Documentation style guide to include more details on the capitalization rules. Capitalization rules get confused easily, especially between terms like Dashboards (menu title) and dashboards (plural).
Which issue(s) this PR fixes:
No fix, just an addition.
* Revert "Docs: Add additional capitalization rules"
This reverts commit 75cbc6303c.
* Docs: Docs: Add additional capitalization rules
* Rename GrafanaServerImpl to Server
* Make flag dependencies explicit
* Extract method for building service graph
* Document and clarify methods
* Rename HttpServer to HTTPServer
* Add docs on services
* Apply suggestions from code review
Co-Authored-By: gotjosh <josue.abreu@gmail.com>
* Fix review comments
* Extract communication to its own document
* Minor fixes
* Minor fix
* Apply suggestions from code review
Co-Authored-By: gotjosh <josue.abreu@gmail.com>
* Add comment on exported field
fix pkg/services/search/service.go:52:3: s.bus undefined (type *SearchService has no field or method bus, but does have Bus)
fixes issue introduced by #19765
* Docs: Update Centrify Section In Generic Oauth Ref #18207
* Docs: Alphabetise Features / Data Sources (#19289)
* Docs: Add Title Case rule for API names (#19620)
* Update contribute/style-guides/documentation-style-guide.md
wfm, thanks!
Co-Authored-By: Marcus Olsson <olsson.e.marcus@gmail.com>
* Feature: Adds connectWithCleanup HOC
* Refactor: Small typings
* Refactor: Makes UseEffect run on Mount and UnMount only
* Refactor: Adds tests and rootReducer
* Refactor: Fixes adding of reducers on startup
* Add simple group by component
* Make segment generic
* Refactoring segments. Add support for lazy loading
* Use base props
* Add example with grouped options
* Move examples to storybook
* Fixes according to pr feedback
* Cleanup
* added className
* Fixes according to feed back
* Add query string to api so that search can be imlemented in the future
* Add docs for overriding default configuration
* Add instructions for building Docker image
* Add docs for end-to-end tests
* Rename to Developer guide
* Fix redirect but adding getExploreState method to graphite
* Explore: Create interpolateVariablesInQueries function for datasources
* Explore: Add interpolateVariablesInQueries method to elasticsearch datasource
* Add interpolateVariablesInQueries function to influx and postgres
* Explore: Add interpolateVariablesInQueries to Mssql and Mysql datasources
* Explore: Add datasources to queries
* Explore: Code formatting
* Prettier formating fix
* Explore: Add rawQuery expanding of variables for influxdb
* Remove console.logs
* Explore: Add rawQuery expanding of multiple variables for influxdb
* Explore: If no queries in Influxdb, return early []
* Explore: Refactor influxDb to follow the code structure
* build: use vendor folder for building
not sure if this is a good idea or not, but this stops module fetching
* untouch yarn.lock
Signed-off-by: Kyle Brandt <kyle@grafana.com>
* modules on in runPrint
When using Raw Document query with Elasticsearch there's a special
response from datasource that is used which includes a type field with
the value json. In the table panel there is a transformation for JSON
data which up until this fix didn't work at all due to the new data
structure we call data frames.
Co-Authored-By: Hugo Häggmark <hugo.haggmark@grafana.com>
Fixes#19531
* fixed unit symbols and description consistency in valueFormats/categories.ts
The preferred English spelling is "litre" (vs "liter") and "metre" (vs "meter"), except in American english. Also, the symbol for Litre is an uppercase 'L', not lowercase.
* Changed metre -> meter in units
* Fixes Time Range Controls formatting #19339
Image was updated to reflect the latest UI but after reading the
documentation README it looks like someone else will have to upload it.
Thanks for your amazing tool Grafana team!
* Update docs/sources/reference/timerange.md
Co-Authored-By: Marcus Olsson <olsson.e.marcus@gmail.com>
* Update docs/sources/reference/timerange.md
Co-Authored-By: Marcus Olsson <olsson.e.marcus@gmail.com>
* Convert Azure Application Insights datasource to Go
Allows for alerting of Application Insights data source
Closes: #15153
* Fix timeGrainReset
* Default time interval for querys for alerts
* Fix a few rename related bugs
* Update readme to indicate App Insights alerting
* Fix typo and add tests to ensure migration is happening
* Address code review feedback (mostly typos and unintended changes)
* Feature: Adds connectWithCleanup HOC
* Refactor: Small typings
* Refactor: Makes UseEffect run on Mount and UnMount only
* Refactor: Adds tests and rootReducer
* Show SAML login button if SAML is enabled
Move logic inside LoginServiceButtons
* Prevent from rendering login-oauth div if no login service is enabled
* Chore: Upgrade to Go 1.13
Fixes: #18878
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
* Chore: Upgrade lint tools in order to work with Go 1.13
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
* Chore: Fix Go linting issues
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
* Fix: Handle empty nested keys on YAML provisioning datasources
As we provision a datasource via a YAML file, we attempt to transform the
file into sensible Go types that the provisioning code can use.
While this happens, there is a chance some of the keys nested within
the YAML array are empty.
This fix allows the YAML parser to handle empty keys by null checking
the return of `reflect.TypeOf` which according to the documentation:
> TypeOf returns the reflection Type that represents the dynamic type of i. If i is a nil interface value, TypeOf returns nil.
Can return nil.
* Add tests
* Loading states and partial rendering, set loading state in mixed data source, and do not render loading states for react panels
* Updated mixed data source tests
* Docs: Add information regarding the LDAP Debug View
* Add instructions to compress image when adding them to the documentation
* Add a troubleshooting section to the docs documentation
* API: Add `createdAt` and `updatedAt` to api/users/lookup
In the past, we have added both `updatedAt` (#19004) and `createdAt` (#19475) to /api/users/:id
Turns out, api/users/lookup uses the same DTO for both. This fixes the serialization of both `createdAt` and `updatedAt`for this endpoint.
Also, adds a test to ensure no further regressions.
* Updated API documentation
* use grafana-plugin-model dependency that uses go modules
* use grafana-plugin-model with updated hashicorp/go-plugin
* use grafana-plugin-model with re-compiled protos
* test using protoc-gen-go v1.2.0 tag
* use grafana-plugin-model with re-compiled protos
* chore: fix deprecation warning for lint
* use latest grafana-plugin-model
Fixes#19454
* Explore: Take root_url setting into account when redirecting from dashboard to explore
* Explore: Move adding of subath to getExploreUrl function
* Explore: Fix explore redirect for key bindings
* Dev: Sets `preserveSymlinks` to `false` in top-level tsconfig
Improves dev experience in vscode
* Removed preserveSymlinks from tsconfig since default option is false
Only return certain mysql errors from backend.
The following errors is returned as is from backend:
error code 1064 (parse error)
error code 1054 (bad column/field selected)
error code 1146 (table not exists)
Any other errors is logged and returned as a generic
error.
Restrict use of certain functions:
Do not allow usage of the following in query:
system_user()
session_user()
current_user() or current_user
user()
show grants
Fixes#19360
* merge master
* TimeSeries: datasources with labels should export tags (not labels) (#18977)
* merge master
* export prometheus tags
* Annotations: Add annotations support to Loki (#18949)
* Explore: Unify background color for fresh logs (#18973)
* Singlestat: render lines on the panel when sparklines are enabled (#18984)
* Image rendering: Add deprecation warning when PhantomJS is used for rendering images (#18933)
* Add deprecation warning
* Update pkg/services/rendering/rendering.go
Co-Authored-By: Marcus Efraimsson <marcus.efraimsson@gmail.com>
* Units: Adding T,P,E,Z,and Y bytes (#18706)
* Adding T and P for bytes
Luckily, all the hard work was done before; just added in these prefixes for our production environment.
* Future-proofing with other values (why not?)
* Yottaflops?
* Cutting back down to Peta sizes, except for hashes
* Refactor: move ScopedVars to grafana/data (#18992)
* Refactor: Move sql_engine to sub package of tsdb (#18991)
this way importing the tsdb package does not come with xorm dependencies
* use DataFrame in heatmaps
* actually use the setting :)
* remove unused timeSrv
* merge with master / useDataFrames
* fix test function
* merge master
* fix datasource type on snapshot
* reuse DataFrame calcs from graph panel
* update comments
* Multi-LDAP: Do not fail-fast on invalid credentials
When configuring LDAP authentication, it is very common to have multiple
servers configured. When using user bind (authenticating with LDAP using
the same credentials as the user authenticating to Grafana) we don't
expect all the users to be on all LDAP servers.
Because of this use-case, we should not fail-fast when authenticating on
multiple LDAP server configurations. Instead, we should continue to try
the credentials with the next LDAP server configured.
Fixes#19066
* build: make sign rpm packages not depend on checking out private key
* build: move commands from circleci config into verify signed packages script
* build: split update and publish of deb and rpm into two scripts
* use files argument for sign and verify packages
* validate files argument for sign and verify packages
* update test publish of deb/rpm readme
* Create STYLEGUIDE.md
* Update STYLEGUIDE.md
Added a placeholder for image guidelines, someone needs to add specificity
Added Capitalization section
Expanded Word usage
* Update STYLEGUIDE.md
Edited panel definition
* Update STYLEGUIDE.md
Applied Brenda and Marcus's edits
* Moved style guide to style_guides folder and renamed, added README to the style_guides folder, other minor edits
* Update doc-style-guide.md
* Style updates
Changed a couple doc names for consistency, updated file naming conventions and README links
* Corrected file names
Changed file names back to original, clarified file naming convention in documentation-style-guide
* refatoring alert box and using alert
* refactoring alertbox to alert
* Changed default to Error
* added buttonText, onButtonClick, omRemove
* Minor fix to buttons
* fixed onRemove
* Update README.md
Capitalized the G and S in "Getting Started," and moved "guide" to match the section title in the docs.
* Fixed sentence structure. Changed "download" to "grafana.com/get" and changed "get" to "download".
* Docs: Replace "datasources" with "data sources" (#19111)
* Docs: Replace "datasources" with "data sources" (#19111)
* Docs: Replace "datasources" with "data sources" (#19111)
* Docs: Replace "datasources" with "data sources" (#19111)
* Docs: Replace "datasources" with "data sources" (#19111)
* Docs: Replace "datasources" with "data sources" (#19111)
* Docs: Replace "datasources" with "data sources" (#19111)
* Docs: Replace "datasources" with "data sources" (#19111)
* Docs: Replace "datasources" with "data sources" (#19111)
* Docs: Replace "datasources" with "data sources" (#19111)
* Docs: Replace "datasources" with "data sources" (#19111)
* Docs: Replace "datasources" with "data sources" (#19111)
* LDAP: Show all LDAP groups
* Use the returned LDAP groups as the reference when debugging LDAP
We need to use the LDAP groups returned as the main reference for
assuming what we were able to match and what wasn't. Before, we were
using the configured groups in LDAP TOML configuration file.
* s/User name/Username
* Add a title to for the LDAP mapping results
* LDAP: UI Updates to debug view
* LDAP: Make it explicit when we weren't able to match teams
This reverts commit 2514209 from #18384. Reason is that it doesn't
work due to xorm 0.7.1 which doesn't support this new connectionstring
format.
Fixes#19189
Ref #18384
Ref #17665
* replace "sandwich" (menu) button with logo(back home) if kiosk=tv
* update navbar initialize padding-left befause menu button is overlapped by the navbar
Adds a new "Image Rendering" page in Administration section.
Updates configuration page with rendering settings and also
default.ini and sample.ini.
Updates and cleanup pages that referencing image rendering.
Ref #18914
* Add new query mode picker with different states for each query. Also really simple migration script
* Populate cross resource dropdowns
* Cleanup. Handle change events
* Add multi select picker for subscriptions
* Fix markup issue
* Prepare for new query mode
* More cleanup
* Handle multiple queries both in ds and backend
* Refactoring
* Improve migration
* Add support for multiselect display name
* Use multiselect also for locations and resources
* Add more typings
* Fix migrations
* Custom multiselect built for array of options instead of variables
* Add url builder test
* fix datasource tests
* UI fixes
* Improve query editor init
* Fix brokens tests
* Cleanup
* Fix tslint issue
* Change query mode display name
* Make sure alerting works for single queries
* Friendly error for multi resources
* Add temporary typings
Don't update total stats metrics if reporting is disabled.
New setting disable_total_stats for turning off update
of total stats (stat_totals_*) metrics.
Ref #19137
* Explore: add no data points text to graph
* Explore: add console log for error (accidentaly removed)
* Explore: refactor, created getYAxes method for better readability
* Explore: remove unnecessary console.log
* Explore: fix getYAxes method to return value
* Graph: Simplify warning from no data points to No data
* Add items for navmodel and basic page
* add reducer and actions
* adding user mapping table component
* adding components for ldap tables
* add alert box on error
* close error alert box
* LDAP status page: connect APIs WIP
* LDAP debug: fetch connection status from API
* LDAP debug: fetch user info from API
* LDAP debug: improve connection error view
* LDAP debug: connection error tweaks
* LDAP debug: fix role mapping view
* LDAP debug: role mapping view tweaks
* LDAP debug: add bulk-sync button stub
* LDAP debug: minor refactor
* LDAP debug: show user teams
* LDAP debug: user info refactor
* LDAP debug: initial user page
* LDAP debug: minor refactor, remove unused angular wrapper
* LDAP debug: add sessions to user page
* LDAP debug: tweak user page
* LDAP debug: tweak view for disabled user
* LDAP debug: get sync info from API
* LDAP debug: user sync info
* LDAP debug: sync user button
* LDAP debug: clear error on page load
* LDAP debug: add user last sync info
* LDAP debug: actions refactor
* LDAP debug: roles and teams style tweaks
* Pass showAttributeMapping to LdapUserTeams
* LDAP debug: hide bulk sync button
* LDAP debug: refactor sessions component
* LDAP debug: fix loading user sessions
* LDAP debug: hide sync user button
* LDAP debug: fix fetching unavailable /ldap-sync-status endpoint
* LDAP debug: revert accidentally added fix
* LDAP debug: show error when LDAP is not enabled
* LDAP debug: refactor, move ldap components into ldap/ folder
* LDAP debug: styles refactoring
* LDAP debug: ldap reducer tests
* LDAP debug: ldap user reducer tests
* LDAP debug: fix connection error placement
* Text update
* LdapUser: Minor UI changes moving things around
* AlertBox: Removed icon-on-top as everywhere else it is centered, want to have it be consistent
* Graph: constant series as override
- ability to define a series override that takes the first value of a
timeseries and produces constant series from it.
* Moved constant series override logic to grafana-ui
* Added docs for instant queries and constant series override
* Loki: Updated cheat sheet with new filter syntax
- updated cheat sheet with new filter syntax
- added user-specific examples from the user's label set
- added link to LogQL docs
- separated styles for examples (clickable) and expressions
* Review feedback
* LDAP: Allow an user to be synchronised against LDAP
This PR introduces the /ldap/sync/:id endpoint. It allows a user to be synchronized against LDAP on demand.
A few things to note are:
LDAP needs to be enabled for the sync to work
It only works against users that originally authenticated against LDAP
If the user is the Grafana admin and it needs to be disabled - it will not sync the information
Includes a tiny refactor that favours the JSONEq assertion helper instead of manually parsing JSON strings.
Adds a new requirements page to the installation docs.
Wanted/needed some place to document known browser
issues and thought that adding this missing page together
with OS, hardware, database and browser requirements
would be a good thing.
Fix: move 6.4 section in upgrade notes further down.
Fixes#16487
Ref #18690
* POC: trying to see if there is a way to support objects in template interpolations
* Added support for nested objects, and arrays
* Added accessor cache
* fixed unit tests
* First take
* Use links supplier in graph
* Add field's index to cache items
* Get field index from field cache
* CHange FiledCacheItem to FieldWithIndex
* Add refId to TimeSeries class
* Make field link supplier work with _series, _field and _value vars
* use field link supplier in graph
* Fix yaxis settings
* Update dashboard schema version and add migration for data links variables
* Update snapshots
* Update build in data link variables
* FieldCache - idx -> index
* Add current query results to panel editor
* WIP Updated data links dropdown to display new variables
* Fix build
* Update variables syntac in field display, update migration
* Field links supplier: review updates
* Add data frame view and field name to TimeSeries for later inspection
* Retrieve data frame from TimeSeries when clicking on plot graph
* Use data frame's index instead of view
* Retrieve data frame by index instead of view on TimeSeries
* Update data links prism regex
* Fix typecheck
* Add value variables to suggestions list
* UI update
* Rename field to config in DisplayProcessorOptions
* Proces single value of a field instead of entire data frame
* Updated font size from 10px to 12px for auto complete
* Replace fieldName with fieldIndex in TimeSeries
* Don't use .entries() for iterating in field cache
* Don't use FieldCache when retrieving field for datalinks in graph
* Add value calculation variable to data links (#19031)
* Add support for labels with dots in the name (#19033)
* Docs update
* Use field name instead of removed series.fieldName
* Add test dashboard
* Typos fix
* Make visualization tab subscribe to query results
* Added tags to dashboard so it shows up in lists
* minor docs fix
* Update singlestat-ish variables suggestions to contain series variables
* Decrease suggestions update debounce
* Enable whitespace characters(new line, space) in links and strip them when processing the data link
* minor data links UI update
* DataLinks: Add __from and __to variables suggestions to data links (#19093)
* Add from and to variables suggestions to data links
* Update docs
* UI update and added info text
* Change ESC global bind to bind (doesn't capture ESC on input)
* Close datalinks suggestions on ESC
* Remove unnecessary fragment
* don't listen to legacy data events in graph
* fix test
* rename function
* add annotationsSrv stub
* use const
* fix preProcessPanelData
* update test
* PanelQueryRunner: Need to cache preProcessPanelData function between runs so last result can be remembered
* Better fix for remembering lastResult
* Code simplification
* Simplify code a bit
* I needed to learn some rxjs and understand this more, so just playing around
* Updated
* Removed all the complete calls
* Refactoring
* StreamHandler -> observable start
* progress
* simple singal works
* Handle update time range
* added error handling
* wrap old function
* minor changes
* handle data format in the subscribe function
* Use replay subject to return last value to subscribers
* Set loading state after no response in 50ms
* added missing file
* updated comment
* Added cancelation of network requests
* runRequest: Added unit test scenario framework
* Progress on tests
* minor refactor of unit tests
* updated test
* removed some old code
* Shared queries work again, and also became so much simplier
* unified query and observe methods
* implict any fix
* Fixed closed subject issue
* removed comment
* Use last returned data for loading state
* WIP: Explore to runRequest makover step1
* Minor progress
* Minor progress on explore and runRequest
* minor progress
* Things are starting to work in explore
* Updated prometheus to use new observable query response, greatly simplified code
* Revert refId change
* Found better solution for key/refId/requestId problem
* use observable with loki
* tests compile
* fix loki query prep
* Explore: correct first response handling
* Refactorings
* Refactoring
* Explore: Fixes LoadingState and GraphResults between runs (#18986)
* Refactor: Adds state to DataQueryResponse
* Fix: Fixes so we do not empty results before new data arrives
Fixes: #17409
* Transformations work
* observable test data
* remove single() from loki promise
* Fixed comment
* Explore: Fixes failing Loki and Prometheus unit tests (#18995)
* Tests: Makes datasource tests work again
* Fix: Fixes loki datasource so highligthing works
* Chore: Runs Prettier
* Fixed query runner tests
* Delay loading state indication to 200ms
* Fixed test
* fixed unit tests
* Clear cached calcs
* Fixed bug getProcesedDataFrames
* Fix the correct test is a better idea
* Fix: Fixes so queries in Explore are only run if Graph/Table is shown (#19000)
* Fix: Fixes so queries in Explore are only run if Graph/Table is shown
Fixes: #18618
* Refactor: Removes unnecessary condition
* PanelData: provide legacy data only when needed (#19018)
* no legacy
* invert logic... now compiles
* merge getQueryResponseData and getDataRaw
* update comment about query editor
* use single getData() function
* only send legacy when it is used in explore
* pre process rather than post process
* pre process rather than post process
* Minor refactoring
* Add missing tags to test datasource response
* MixedDatasource: Adds query observable pattern to MixedDatasource (#19037)
* start mixed datasource
* Refactor: Refactors into observable parttern
* Tests: Fixes tests
* Tests: Removes console.log
* Refactor: Adds unique requestId
- upgraded rc-cascader (did not fix the alignment issue)
- Safari seems to default to middle alignment, added override to explore
styles
- added empty expand icon property to satisfy API after upgrade
* API: Add `updatedAt` to api/users/:id
This adds the timestamp of when a particular user was last updated to
the `api/users/:id` endpoint.
This helps our administrators understand when was the user information last
updated. Particularly when it comes from external systems e.g. LDAP
* Adding DashboardPicker component
* fix prop names
* fix prop names pt2
* add component and modify utils
* add showHour prop
* add minuteStep to TimeOfDayPicker, add value to DashboardPicker
* fix for dashboard picker, missed adding file
* Adding story
* add another story for hiding hour and style fixes
* fix these generated files
* fixes after review
* rename current value
* fix type issue on onChange
* fix story
* Adding T and P for bytes
Luckily, all the hard work was done before; just added in these prefixes for our production environment.
* Future-proofing with other values (why not?)
* Yottaflops?
* Cutting back down to Peta sizes, except for hashes
Up until now one had to manually specify module name mapper for stylesheet files in order for Jest not to fail when running tests that import stylesheet files.
This adds default mock for stylesheet file and some tests
If grafana is build from a non-git source a new timestamp is used every build which makes grafana binaries
non-reproducible.
Motivation: https://reproducible-builds.org
Adds the definition of `GetTeamsForLDAPGroupCommand` which handles the lookup of team information based on LDAP groupDNs.
This is an Enterprise only feature. To diferentiate,a response will contain the `team` key as `null` on OSS while on Enterprise the key will contain an empty array `[]` when no teams are found.
* LDAP: Add API endpoint to query the LDAP server(s) status|
This endpoint returns the current status(es) of the configured LDAP server(s).
The status of each server is verified by dialling and if no error is returned we assume the server is operational.
This is the last piece I'll produce as an API before moving into #18759 and see the view come to life.
* Move the ReloadLDAPCfg function to the debug file
Appears to be a better suite place for this.
* LDAP: Return the server information when we find a specific user
We allow you to specify multiple LDAP servers as part of LDAP authentication integration. As part of searching for specific users, we need to understand from which server they come from. Returning the server configuration as part of the search will help us do two things:
- Understand in which server we found the user
- Have access the groups specified as part of the server configuration
* LDAP: Adds the /api/admin/ldap/:username endpoint
This endpoint returns a user found within the configured LDAP server(s). Moreso, it provides the mapping information for the user to help administrators understand how the users would be created within Grafana based on the current configuration.
No changes are executed or saved to the database, this is all an in-memory representation of how the final result would look like.
* WIP: Use data frames in explore
* Explore: everything seems to be working again
* Reworked ResultProcessor tests
* Fixed unit test
* Add some typings and comments
* Performance/Webpack: Introduces more aggressive code-splitting and other perf improvements
- Introduces dynamic imports for built-in plugins
- Uses dynamic imports for various packages (rst2html, brace)
- Introduces route-based dynamic imports
- Splits angular and moment into separate bundles
* WIP: inital POC
* Wip: Moving forward
* Wip
* Refactor: Makes loading indicator work for Prometheus
* Refactor: Reverts prom observable queries because they did not work for multiple targets
* Refactor: Transforms all epics into thunks
* Fix: Fixes scanning
* Fix: Fixes so that Instant and TimeSeries Prom query loads in parallel
* Fix: Fixes negation logic error
* Wip: Introduces PanelData as a carries for query responses
* Refactor: Makes errors work again
* Refactor: Simplifies code somewhat and removes comments
* Tests: Fixes broken tests
* Fix query latency
* Remove unused code
* add appending utility
* add appending utility
* update comment
* rename to mutable
* move mutable functions out of DataFrameHelper
* move mutable functions out of DataFrameHelper
* move mutable functions out of DataFrameHelper
* turn DataFrameHelper into FieldCache
* guess time from name
* graph the numbers
* return the timeField, not just the index
* just warn on duplicate field names
* only use a parser if the input is a string
* append init all fields to the same length
* typo
* only parse string if value is a string
* DataFrame: test fixes
* Switch to null for missing values
* Fixed tests
* Editor: Fixes issue where only entire lines were being copied
Closes#18768
* Simplifies onCopy handler and factors out logic for easier testing
Also adds tests to verify behaviour
* Explore: clear results when you change datasource
* Explore: Clear results on data source change, and fix query hints issue
* Clear results on clear all
* Prometheus: Update logic of when to re-check query hints
* Build: Removed typescript checking from dev bundler
- when switching branches and trying out features, TS checking and bundling are eating up a lot
of CPU
- most of us are using an editor with typechecking support
- this commit removes type checking from the dev bundler
- we still have type checking enabled as a precommit hook and as part of
the prod bundler
* Adds new npm script: start:noTsCheck
* API Tutorial: Improve content and readability
- Simplified the introductory paragraphs.
- Rewrote the descriptions and steps to improve readability.
* Updated topic as discussed in the PR
- Corrected the typo from "Graphana" to "Grafana".
- Rewritten the note as suggested by reviewers and to avoid passive voice.
Please review and share your thoughts.
Fixes#18533
To recreate the bug described in the original issue in the simplest possible way:
1. Setup dashboard with a single panel and repeat it using variables
2. Set the dashboard refresh to 5s
3. Hover over repeated panel during the refresh
What happened there?
When panels are repeated every time the dashboard is refreshed or variables change the repeated PanelModels are recreated. In https://github.com/grafana/grafana/blob/master/public/app/features/dashboard/state/DashboardModel.ts#L322 the models are removed from dashboard panel's model property what makes the dashboard re-render with source panel only, and then back again with the repeated panels when models are re-created. This means creating new DashboardPanel components. But when the repeated PanelModels are removed, they are not destroyed what results in a behaviour described in #18533.
This is a quick fix for this issue. Ideally I think we should use some cache and update the repeated PanelModels when the refresh or variables change trigger re-render, instead of re-creating those every time. I don't want to do this ATM as the logic around repeating panels is quite complex and require some <3.
* Changes brace-insertion behavior to be less annoying
* Removes use of braces plugin
* Revert "Removes use of braces plugin"
This reverts commit 4cf4a6073b.
* WIP: inital POC
* Wip: Moving forward
* Wip
* Refactor: Makes loading indicator work for Prometheus
* Refactor: Reverts prom observable queries because they did not work for multiple targets
* Refactor: Transforms all epics into thunks
* Fix: Fixes scanning
* Fix: Fixes so that Instant and TimeSeries Prom query loads in parallel
* Fix: Fixes negation logic error
* Propagate errors in stream events, and close streams
* add extension framework
* add filter transformer
* more logging
* adding more tests
* make stats an extension
* make stats an extension
* test registry init
* first get a function, then call it
* move files to data package
* not used
* update to columnar
* Add more tests for nameMatcher
* Fix invert predicate
* add fluent API
* remove calc snapshot
* split Field matchers and Frame matchers
* split filter transformers
* Fix typo
* datalink on field
* add dataFrame to view
* Use scoped variables to pass series name and value time to data links interpolation
* Use scoped variables to pass series name and value time to data links interpolation
* Enable value specific variable suggestions when Gauge is displaying values
* Fix prettier
* Add basic context menu with data links to GaugePanel
* Fix incorrect import in grafana/ui
* Add custom cursor indicating datalinks available via context menu (in Gauge only now)
* Add data links to SingleStat2
* Minor refactor
* Retrieve data links in a lazy way
* Update test to respect links retrieval being lazy
* delay link creation
* cleanup
* Add origin to LinkModel and introduce field & panel links suppliers
* Add value time and series name field link supplier
* Remove links prop from visualization and implement common UI for data links context menu
* Update snapshot
* Rename className prop to clickTargetClassName
* Simplify condition
* Updated drilldown dashboard and minor changes
* Use class name an onClick handler on the top level dom element in visualization
* Enable series name interpolation when presented value is a calculation
* move queryRunner to panelModel
* remove isEditing from PanelChrome
* move listener to QueriesTab
* add shared query datasource
* expose getDashboardSrv to react
* no changes to panel chrome
* issue queries when in fullscreen
* moved to regular QueryEditor interface
* moved to regular QueryEditor interface
* lower limit
* add dashboard query
* no changes to editor row
* fix sort order
* fix sort order
* make it an alpha panel
* make panelId a getter
* fix angular constructor
* rename SeriesData to DataFrame
* merge with master
* use series
* add simple tests
* check unsubscribe
* Minor code cleanup, creating Subjects look cheap and does not need to be lazy, simplifies code
* minor refactor
* Minor refacforing, renames
* added test dashboard
yarn.lock with old deps triggers the github vuln errors, if you update deps
to newest versions grunt commands will stop working. Since we generating
emails here, vuln errors seems needless.
We need to remove grunt dependency anyhow
* Emails: resurrect template notification
* Phantomjs (oh yeah, there is another dev dep phantom :-) was failing for
the generation of the html templates so I had to update the dependencies
in order to fix it. While doing that I update the scripts field and docs
for it as well. yarn.lock is included
* Move splitting of the emails to separate helper function, since more services
coming up that would need to use this functionality
* Add support for enterprise specific email letters. Probably could
be done in the better way, but it's not a priority right now
Using golang:1.12.9 which is based on Debian as a build container
leads to a version mismatch for glibc when running grafana-server
in alpine:3.10
grafana-server: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.28' not found (required by grafana-server)
* Fixes several usability issues with QueryField component
- Can now indent with tab and `mod+[`, `mod+]`
- Copy/Cut preserves new lines, and paste correctly splits blocks now
- Adds support for selection hotkeys
This introduces change to TimeSrv that enables time & time.window query param. Thanks to that time range of a dashboard can be specified as a window(time.window param) around given timestamp(time param)
* Auth: change the error HTTP status codes
* Use 407 HTTP status code for incorrect credentials error
* Improve proxy auth logs
* Remove no longer needed TODO comment
Fixes#18439
* Build: Upgrade to go 1.12.9
* Build: Use default-mysql-client for debian buster
The go base image has been updated to use Debian Buster instead of
Stretch, which seems to have done away with mysql-client in favor of
default-mysql-client.
* Build: Update Dockerfile to use go 1.12.9
Fixes#18592
Since React and other dependencies bump caused some troubles with building packages that @kaydelaney and me tried to debug without any success, we decided to revert React 16.9.0 bump.
* rewrite user profile edit to react (#17525)
* disableLogin change, still need to fix tooltip
* left out disable form for other auth
* PR changes - wrapper to render, userId instead of bool, optional user in state, change provider child param order
* moved directive to angular_wrappers
* catch api error
* finally
* move user arg back to end- optional
* optional type sig
It seems `ldap` module introduced new error type of which
multildap module didn't know about.
This broke the multildap login logic
Fixes#18491
Ref #18587
* switch docker image to alpine base
* Docker: switch packaging image to alpine
* use alpine image for build containers
* switch base images in build script
* only try to set up phantomjs on x86_64, reduce number of layers
* phantomjs binary is bundled with grafana
* Added prometheus metric labels to data returned for normal time series queries
* Fixed result transformer tests for new return layout with prometheus labels
* Fixed prettier formatting
* SQLite migrations
* cleanup
* migrate end times
* switch to update with a query
* real migration
* anno migrations
* remove old docs
* set isRegion from time changes
* use <> for is not
* add comment and fix index decleration
* single validation place
* add test
* fix test
* add upgrading docs
* use AnnotationEvent
* fix import
* remove regionId from typescript
* Rerun query on input changes
Added "this.onRunQuery" for update of the input fields so that the panel updates when changed
* typo in comment
changed "fullu" to "fully"
* modified to onBlur for legend, interval
legend and interval (min step) now call for query re-run when they go 'onBlur' instead of 'onChange'
* PromQueryEditor: Updated snapshot
* Explore/Prometheus: More consistently allows for multi-line queries
Allows a user to hit shift+enter to create a new line in the query field, even
when the autocomplete suggestions are displayed.
Also fixes an issue where a new line was inserted when selecting a suggestion
Closes#18341
* Fixes behavior where query wasn't running on pressing Enter
Also adds test to verify this behavior
* Migrating login services
* Add user signup
* Remove lodash
* Remove media query and extarct LoginServices
* Add React LoginCtrl
* Handle location with Redux and start form validation
* Fix proposal
* Add basic validation
* Fix validation
* Remove state from controller
* Extract login forms
* Fix things up
* Add change password and LoginPage
* Add React page and route to it
* Make redux connection work
* Add validation for password change
* Change pws request
* Fix feedback
* Fix feedback
* LoginPage to FC
* Move onSkip to a method
* Experimenting with animations
* Make animations work
* Add input focus
* Fix focus problem and clean animation
* Working change password request
* Add routing with window.location instead of Redux
* Fix a bit of feedback
* Move config to LoginCtrl
* Make buttons same size
* Change way of validating
* Update changePassword and remove angular controller
* Remove some console.logs
* Split onChange
* Remove className
* Fix animation, onChange and remove config.loginError code
* Add loginError appEvent
* Make flex and add previosuly removed media query
* Wip: Compiles and runs
* WIP: Logs Graph partially working
* Refactor: Adds GraphSeriesToggler
* Refactor: Adds tickDecimals to YAxis
* Refactor: Adds TimeZone and PlotSelection to Graph
* Refactor: Makes the graphResult work in Explore
* Refactor: Adds ExploreGraphPanel that is used by Logs and Explore
* Fix: Fixes strange behaviour with ExploreMode not beeing changed
* Fix: Adds onSelectionChanged to GraphWithLegend
* Refactor: Cleans up unused comments
* ExploreGraph: Disable colorpicker
Existing /api/alert-notifications now requires at least editor access.
Existing /api/alert-notifiers now requires at least editor access.
New /api/alert-notifications/lookup returns less information than
/api/alert-notifications and can be access by any authenticated user.
Existing /api/org/users now requires org admin role.
New /api/org/users/lookup returns less information than
/api/org/users and can be access by users that are org admins,
admin in any folder or admin of any team.
UserPicker component now uses /api/org/users/lookup instead
of /api/org/users.
Fixes#17318
* Docs: Adds details to Pull Request Checklist
* Docs: Changes text according to PR review comments
* Docs: Adds State Management guidlines in FrontEnd style guidelines
* Update CONTRIBUTING.md
Co-Authored-By: gotjosh <josue@grafana.com>
* Update CONTRIBUTING.md
Co-Authored-By: gotjosh <josue@grafana.com>
* Docs: Some minor text changes for better english
Co-Authored-By: gotjosh <josue@grafana.com>
* Docs: Some minor text changes for better english
Co-Authored-By: gotjosh <josue@grafana.com>
* Docs: Some minor text changes for better english
Co-Authored-By: gotjosh <josue@grafana.com>
* Docs: Some minor text changes for better english
Co-Authored-By: gotjosh <josue@grafana.com>
* Docs: Some minor text changes for better english
Co-Authored-By: gotjosh <josue@grafana.com>
* Do not set SameSite login_error cookie attribute if cookie_samesite is none
* Do not set SameSite grafana_session cookie attribute if cookie_samesite is none
* Update middleware tests
* Fix CreateTeam api endpoint
No team member should be created for requests
authenticated by API tokens.
* Update middleware test
Assert that `isAnonymous` is set for `SignedInUser`
authenticated via API key.
* Add test for team creation
Assert that no team member is created if the signed in user
is anomymous.
* Revert "Fix CreateTeam api endpoint"
This reverts commit 9fcc4e67f5.
* Revert "Update middleware test"
This reverts commit 75f767e58d.
* Fix CreateTeam api endpoint
No team member should be created for requests
authenticated by API tokens.
* Update team test
* Change error to warning and update tests
* Fix: Avoid glob of single-value array variables
Based on our current implementation of templates, when multi-select
variables are part of a dashboard query the default/fallback formatting option is `glob`.
Some data sources do not support glob (e.g. metrics.{a}.* instead of
metrics.a.*) for single variable queries. This behaviour breaks dashboards.
This commit introduces an alternative formatting option where globing is avoided if it's there is only one value as part of the query variable.
This means, queries previously formatted as `query=metrics.{a}.*.*`, are
now formatted as `query=metrics.a.*.*`. However, queries formatted as
`query=metrics.{a,b}.*.*` continue to be as is.
In response to #18282
DataLinksEditor does not limit amount of links by default now (it was 1 link before, unless maxLinks prop was specified). Also, links that do not have label specified, are not rendered anymore.
This commit addresses half of #13749 by making sure GetMetricData
works for alerting. Math Expressions (compound metrics) will still not
work for alerting, this would require a bigger refactoring of Grafana's
alerting service. However, with this commit at least alerting for basic
metrics with non empty query Id will work.
Fixes half of #13749
* Auth: Do not search for the user twice
Previously `initContextWithBasicAuth` did not use `LoginUserQuery`, doing
`GetUserByLoginQuery` only i.e. looking user in DB only, things changed when
this function started to check LDAP provider via `LoginUserQuery` (#6940),
however, this request was placed after `GetUserByLoginQuery`, so we first
looking in DB then in the LDAP - if LDAP user hasn't logged in we will
not find it in DB, so `LoginUserQuery` will never be reached.
`LoginUserQuery` request already performs `GetUserByLoginQuery`
request in correct sequence. So we can just remove redundant request.
* Correct sequence execution during authentification &
introduce tests for it
* Move basic auth tests to separate test file, since main test file already
pretty large
* Introduce `testing.go` for the middleware module
* Remove redundant test helper function
* Make handler names more explicit
Ref 5777f65d05Fixes#18329
* Auth: address review comment
* added alert rule tags in webhook notifications
* fix: don't include whole list of Tag objects but only key/value pairs in Webhook JSON
* marked webhook alerts to support alert rule tags
* UI: Fixes issue where ToggleButtonGroup overlapped DataSourcePicker in Firefox
Closes#17692
* Select: added more padding to right to make space for indicator/caret
* Add tests for errors basic auth cases and moves tests to separate test-case.
Also names test cases consistently
* Add additional test helper
Ref 82661b9f69
* LDAP: nitpicks
* Add more tests
* Correct and clarify comment for Login() method
* Rename methods (hail consistency!)
* Uppercases first letter of the logs everywhere
* Moves method definitions around to more appropriate places
Fixes#18295
* Auth: consistently return same basic auth errors
* Put repeated errors in consts and return only those consts as error strings
* Add tests for errors basic auth cases and moves tests to separate test-case.
Also names test cases consistently
* Add more error logs and makes their messages consistent
* A bit of code style
* Add additional test helper
* Auth: do not expose even incorrect password
* Auth: address review comments
Use `Debug` for the cases when it's an user error
The `oauth_state` cookie used to be created with the SameSite value set
according to the `cookie_samesite` configuration.
However, due to a Safari bug SameSite=None or SameSite=invalid are treated
as Strict which results in "missing saved state" OAuth login failures
because the cookie is not sent with the redirect requests to the OAuth
provider.
This commit always creates the `oauth_state` cookie with SameSite=Lax
to compensate for this.
* Imperative mood
The English language suggests that when giving out instructions or considerations is best to use imperative mood as the writing style. Done as part of this commit:
- some worth smithing to match this style
- changed the format to match the fact that this is commonly read as part of a text box when opening up your PRs
- and extended a few descriptions to make it more friendly for newcomers
* Auth Proxy: Include additional headers as part of the cache key
Auth proxy has support to send additional user attributes as part of the
authentication flow. These attributes (e.g. Groups) need to be monitored
as part of the process in case of change.
This commit changes the way we compute the cache key to include all of the
attributes sent as part of the authentication request. That way, if we
change any user attributes we'll upsert the user information.
Allow non admins to see plugins list but only with readme. Any config tabs are hidden from the plugin page. Also plugin panel does not show action buttons (like Enable) for non admins.
This changes trigger-docs-update job so that the docs build goes to production.
There is no additional risk to push a broken site in production. The docs build process is to publish to staging, then wait for a manual approval before publishing to prod.
* LDAP: improve POSIX support
* Correctly abtain DN attributes result
* Allow more flexibility with comparison mapping between POSIX group & user
* Add devenv for POSIX LDAP server
* Correct the docs
Fixes#18140
* Update defaults.ini and sample.ini with the SAML assertion mapping
fields
* Document Grafana's ability to map ACS attributes while a Grafana user is created
Running the command as given in the current doc throws the error:
```
sudo wget -q -O - https://packages.grafana.com/gpg.key | apt-key add -
ERROR: This command can only be used by root.
```
The proposed change fixes this issue.
* Reapply MetricNamespace support
* Fixing tests
* refactor: move metricnamespace param to backend
* refactor: remove unused function
* azuremonitor: migration for new metric namespace field
* azuremonitor: add template query for metric namespace with a sub
* docs: template queries for azure monitor
Adds new lines for the metricnamespace template function and fixes
some messed up lines
* @grafana/toolkit: make ts-loader ignore files that are not bundled
* @grafana/toolkit: improve the circleci task (#18133)
This PR makes some minor improvements to the circle task
Adds build info to plugin.json
adds dependencies to deployed artifacts
Makes sure prettier has content before writing (avoid writing empty files)
renames 'bundle' to 'package' and saves stuff in a 'packages' file
* @grafana/toolkit: enable plugin themes to work with common stylesheet (#18160)
This makes it possible to use themes styleshheet files and stylesheet imports at the same time. The problem occurred when trying to migrate polystat panel to toolkit: grafana/grafana-polystat-panel#62
Prompted by the @slim-bean talk (thanks!). With that definition
`GO_FILES` var can be dynamically changed, that will be very helpful
in grafana enterprise repo
Adds pulse waveform. Is predictable in the sense that the start of the waveform is aligned to epoch time (instead of the start of the query time). This makes a useful signal for manual testing of alerting in the devenv.
* chore: mirror the Dockerhub readme
Seems like the dockerhub readme is out of sync with this one. Let's update this one to make them identical.
* chore: add changes part of 6.3.0-beta1 to the docker image README
* chore: add the date to the 6.3.0-beta1 changes in the CHANGELOG
* docs: Link to SAML docs and document configuration options
- Document configuration options `defaults.ini` and `sample.ini`
- Add the SAML documentation
- Link to the SAML documentation from "what's new in 6.3"
* Enable running tests in watch mode and by path or name regex
* Toolkit readme update
* Show webpack stats on successful compilation
* unzip the plugin, not the docs
* Metrics: remove unused metrics
Metric `M_Grafana_Version` is not used anywhere, nor the mentioned
`M_Grafana_Build_Version`. Seems to be an artefact?
* Metrics: make the naming consistent
* Metrics: add comments to exported vars
* Metrics: use proper naming
Fixes#18110
* Build: allow dynamically change docker image
Right now, only for couple DBs.
With the 2.1, you can do `${TAG:-5.6}` without needing the `.env` file, but
it seems it would be better for back-compat to support `.env` right now.
Fixes#17891
* Build: add prefix for removal process
* Docs: mention makefile command instead of the bash
Since we are moving to makefile for things and make command
simplifies some of the actions you have to perform to work with
different environments
* Docs: mention dynamic tags in the docs
* Docs: avoid name collision
Fixes#16107
* Testing lerna on circle
* Remove dependency on test task, fix yarn
* yarn fix
* Run lerna from local bin
* Use packages cache, run lern via npx
* Add packages:build
* Install packages before release
* Remove cache tmp
* add lerna bootstrap
* temporarily add tsignore
* lerna add data package to ui
* Remove @types/lodas resolution
* Try any...
* Typo fix
* Add publishing packages
* update lerna publish script
* Reset git befgore publishing package
* Correct lerna version
* Packages version bump
* Remove postpublish
* Publish to npm
* Set git creds before commit
* Rename job and run it after frontend tests and build passes
* Run next packages release on master but not when tagged with release
* Minor copy
* Update circle's config
* Fix config
* Add support for `is_disabled` to `CreateUser()`
* Add support for `is_disabled` to `SearchUsers()`
Had to add it as a `string` type not as `bool`, since if that's property
is omitted, we would have add it to SQL request, which might be dangerous
* Restructure desctructive tests and add more
Before this applied, go binary is referenced inconsistently in makefile.
Sometimes with go modules enabled and sometimes not, sometimes through
a variable and sometimes not.
This change makes all the references in makefile consistent
* validate type and id
* copy all svg and png, useful if people don't use the img folder
* update comments
* add stubs for each ci task
* use ci-work folder rather than build
* use axios for basic testing
* Packages: publish packages@6.3.0-alpha.39
* bump version
* add download task
* Packages: publish packages@6.3.0-alpha.40
* merge all dist folders into one
* fix folder paths
* Fix ts error
* Packages: publish packages@6.3.0-beta.0
* Packages: publish packages@6.3.0-beta.1
* bump next to 6.4
* Packages: publish packages@6.4.0-alpha.2
* better build and bundle tasks
* fix lint
* Packages: publish packages@6.4.0-alpha.3
* copy the file to start grafana
* Packages: publish packages@6.4.0-alpha.4
* use sudo for copy
* Packages: publish packages@6.4.0-alpha.5
* add missing service
* add service and homepath
* Packages: publish packages@6.4.0-alpha.6
* make the folder
* Update packages/grafana-toolkit/src/cli/tasks/plugin.ci.ts
* Update packages/grafana-toolkit/src/cli/tasks/plugin.ci.ts
* API: Duplicate API Key Name Handle With Useful HTTP Code
* 17447: make changes requested during review
- use dialect.IsUniqueContraintViolation
- change if statement to match others
- return error properly
* Revert "17447: make changes requested during review"
This reverts commit a4a674ea83.
* API: useful http code on duplicate api key error w/ tests
* API: API Key Duplicate Handling
fixed small typo associated with error
* Minor fix for nil pointer when trying to log error
* Do not return error if a dashboard is created
Only log the failures
* Do not return error if the folder is created
Only log the failures
* Docs: First draft of whats new in 6.3
* Docs: Updated whats new article
* Docs: typos
* docs: fix broken link, add links and update docs index
* Docs: whats new in enterprise
* Users: show badges for each auth provider
* Chore: don't use functions in angular bindings
* Users: minor style changes to labels
* Chore: convert auth labels on the backed side, deduplicate frontend code
* Users: use authLabels everywhere instead of authModule
* User: fix edit user page style
* Users: minor fixes after review
* Replace webpack ng annotate plugin with babel-plugin-angularjs-annotate
* Copy statics(png/svg) when necessary or keep the original path when files loaded via file-loader
* Update readme
* Add tests for login view
* Fix OAuth auto login redirect loop
login_error cookie is only set when the OAuth login fails
for some reason. Therefore, the login view should return
immediately if a login_error cookie exists before trying
to login the user using OAuth again.
* Fix test
Use 'index-template' instead of 'index' for testing
* Add some comments
* Docs: Documents new features available with Loki data source in Explore
Closes#17898
* Docs: Formats note as a quote and adds additional detail regarding live tailing
* Explore: Adds support for new loki 'start' and 'end' params for labels endpoint
Also initializes absoluteRange when explore is initialized
Closes#16788
* Explore: Dispatches updateTimeRangeAction instead of passing absoluteRange when initializing
Also removes dependency on sinon from loki language provider test
* Loki: Refactors transformation of absolute time range to URL params into small utility function
* Makes use of rangeToParams() util function in loki language provider test
Also updates LanguageProvider.request() interface so that url should be type string, and adds optional params argument
* LDAP:Docs: `active_sync_enabled` setting
Mention `active_sync_enabled` setting and enable it by default
* LDAP: move "disableExternalUser" method
Idea behind new design of the LDAP module is to minimise conflation
between other parts of the system, so it would decoupled as much as
possible from stuff like database, HTTP transport and etc.
Following "Do One Thing and Do It Well" Unix philosophy principal, other things
could be better fitted on the consumer side of things.
Which what this commit trying to archive
* LDAP: correct user/admin binding
The second binding was not happening, so if the admin login/password
in LDAP configuration was correct, anyone could had login as anyone using
incorrect password
* Add support for static files
* Use url-loader in single css setup
* Add postcss setup
* Expose emotion to plugins and externalise it in toolkit
* Add readme note about emotion
* Add SAML configuration options
* Add crewjam/saml as a depdency
Needed as part of the enterprise SAML integration.
* Vendor github.com/stretchr/testify/require
The package require implements the same assertions as the `assert` package but stops test execution when a test fails.
* feat: AzureMonitor implements legend key on backend
To be able to remove the duplicated query logic on the
frontend, the backend code needs to implement alias
patterns for legend keys as well as allowing the default
list of allowed time grains to be overridden. Some metrics
do not support all the time grains and the auto timegrain
calculation can be incorrect if the list is not overridden.
* feat: AzureMonitor - removes duplicate query logic on frontend
* AzureMonitor small refactoring
Extracted method and tidied up the auto time grain
code.
* azuremonitor: support for auto time grains for alerting
Converts allowed timegrains into ms and saves in dashboard json.
This makes queries for alerting with an auto time grain work in
the same way as the frontend.
* chore: typings -> implicitAny count down to 3413
* azuremonitor: add more typings
* Explore: Adds datasource plugin config option 'modesSupportingTextEdit'
This allows one to specify which modes support toggling query text edit on and off
Closes#17904
* Explore: Restricts query text edit toggle to metrics mode
In 4281344 the loadPluginCss util was migrated to @grafana/runtime package. This made SystemJS to fail loading the css files for a plugin. Root cause was that core and runtime used different SystemJS instances.
To solve the issue, I am exposing SystemJS from @grafana/runtime package to make sure we are always using the same instance. Also, the SystemJS dependency was moved to runtime.
* ChangePassword to React, created PasswordInput component, attempting UserProvider wrapper component, adding flex to btn row
* UserAPI interface, force classes on PasswordInput, remove api call from ChangePassword
* refactored out form
* clean up
* removed unnecessary bind, added loading state and loading component to change password form
* should be OR
* arrow funcs instead of binds, inline-block instead of flex, isSaving instead of isLoading, disabled button instead of spinner
* inline-flex on the react btn
* change state instatiatiation
* Explore: Adds support for toggling text edit mode in explore
Also modifies query-row-status css to use relative position instead of absolute
Closes#16770
* Explore: Defines State interface for <QueryRow /> and removes unnecessary constructor
* LDAP: Divide the requests
Active Directory does indeed have a limitation with 1000 results
per search (default of course).
However, that limitation can be workaround with the pagination search feature,
meaning `pagination` number is how many times LDAP compatible server will be
requested by the client with specified amount of users (like 1000). That feature
already embeded with LDAP compatible client (including our `go-ldap`).
But slapd server has by default stricter settings. First, limitation is not 1000
but 500, second, pagination workaround presumably (information about it a bit
scarce and I still not sure on some of the details from my own testing)
cannot be workaround with pagination feature.
See
https://www.openldap.org/doc/admin24/limits.htmlhttps://serverfault.com/questions/328671/paging-using-ldapsearchhashicorp/vault#4162 - not sure why they were hitting the limit in
the first place, since `go-ldap` doesn't have one by default.
But, given all that, for me `ldapsearch` command with same request
as with `go-ldap` still returns more then 500 results, it can even return
as much as 10500 items (probably more).
So either there is some differences with implementation of the LDAP search
between `go-ldap` module and `ldapsearch` or I am missing a step :/.
In the wild (see serverfault link), apparently, people still hitting that
limitation even with `ldapsearch`, so it still seems to be an issue.
But, nevertheless, I'm still confused by this incoherence.
To workaround it, I divide the request by no more then
500 items per search
* Teams: show proper label for each auth provider
Teams: don't sore AuthModule in team_member table, use JOIN to get it instead
* Teams: fix AddTeamMember after last changes
* Teams: add more auth provider labels
* Teams: show external sync badge if LDAP is not enabled
* Teams: tests for getting auth module
* Build: use golangci-lint as a make command
* Since gometalinter was deprecated in favor of golangci-lint so it was
replaced by it. Responsibilities held by the gometalinter was moved to
golangci-lint
* There was some changes in implementation (that was also mentioned in
the code comment) between the tools, which uncovered couple errors
in the code. Those issues were either solved or disabled by
the inline comments
* Introduce the golangci-lint config, to make their
configuration more manageable
* Build: replace backend-lint.sh script with make
* Docs: correct link to the Grafana build-container.
* Docs: documents usage on the gopath when upgrading deps.
* Dev docs: info for upgrading deps only in one location.
* Add LDAP config instead sed use
* Add container name
* Add SizeLimit option to client and to server.
Probably useless at this point, but it's better to have it then otherwise
* OAuth: github team sync POC
* OAuth: minor refactor of github module
* OAuth: able to use team shorthands for github team sync
* support passing a list of groups via auth-proxy header
* TimePicker: Restore time picker settings
* CleanUp: removed unuused angular-ui (calendar) components
* Fix angular boot dependency list
* TimePicker: set time to 23:59:00 when setting To time using calendar
Elasticsearch v7.0 changed the behavior of max concurrent shard
requests and the default to 5. v5.6 and before 7.0 the default
is 256. This adds some additional behavior given certain
version is selected when configure the datasource to set
default max concurrent shard requests.
Changing from a version pre-v7.0+ to v7.0+ sets max
concurrent shard requests to 5.
Changing from a version v7.0+ to a pre-v7.0 sets max
concurrent shard requests to 256.
Fixes#17454
Adds version note for alert rule tags.
Adds version note for graph data links.
Adds information about secret_key and encryption format in use
Fixes#17815Fixes#17803
* Add test that expects a POST request
* Change graphite /metric/find request to POST
Query parameter can become large enough
to exceed GET URI limits.
* Fix requests with time range
Initialise httpOptions.params
* Fix for supporting queries referencing template variable
* Move cli to grafana-toolkit
* Moving packages, fixing ts
* Add basics of plugin build task
* Add toolkit build task
* Circle - use node 10 for test-frontend
* Prettier fix
* First attempt for having shared tsconfig for plugins
* Add enzyme as peer depencency
* Do not expose internal commands when using toolkit from npm package
* Introduce plugin linting
* Fix missing file
* Fix shim extenstion
* Remove rollup typings
* Add tslint as dependency
* Toolkit - use the same versions of enzyme and tslint as core does
* Remove include property from plugin tsconfig
* Take failed suites into consideration when tests failed
* Set ts-jest preset for jest
* Cleanup tsconfig.plugins
* Add plugin:test task
* Rename file causing build failute
* Fixing those missed renames
* Add ts as peer dependency
* Remove enzyme dependency and tweak test plugin task
* Allow jest options overrides via package.json config
* Improvements
* Remove rollup node packages
* TMP : Fix ts errors when linked
* use local tslint if it exists
* support coverage commands
* Fix merge
* fix build
* Some minors
* Make jest pass when no tests discovered
Adds URL support for mode state (Metrics/Logs). It's important
to be able to share a link to logs when a data source supports
both metrics and logs.
Closes#17101
* Refactor: Removes switches for TimeStamp and LocalTime and displays time as configured for user
* Styles: Updates classname used to display timeUtc
* Refactor: Adds switch for Time column
* Modify backend to allow expiration of API Keys
* Add middleware test for expired api keys
* Modify frontend to enable expiration of API Keys
* Fix frontend tests
* Fix migration and add index for `expires` field
* Add api key tests for database access
* Substitude time.Now() by a mock for test usage
* Front-end modifications
* Change input label to `Time to live`
* Change input behavior to comply with the other similar
* Add tooltip
* Modify AddApiKey api call response
Expiration should be *time.Time instead of string
* Present expiration date in the selected timezone
* Use kbn for transforming intervals to seconds
* Use `assert` library for tests
* Frontend fixes
Add checks for empty/undefined/null values
* Change expires column from datetime to integer
* Restrict api key duration input
It should be interval not number
* AddApiKey must complain if SecondsToLive is negative
* Declare ErrInvalidApiKeyExpiration
* Move configuration to auth section
* Update docs
* Eliminate alias for models in modified files
* Omit expiration from api response if empty
* Eliminate Goconvey from test file
* Fix test
Do not sleep, use mocked timeNow() instead
* Remove index for expires from api_key table
The index should be anyway on both org_id and expires fields.
However this commit eliminates completely the index for now
since not many rows are expected to be in this table.
* Use getTimeZone function
* Minor change in api key listing
The frontend should display a message instead of empty string
if the key does not expire.
* Update datasource.ts
* Update datasource.test.ts
* utcOffset reverse
from moment docs, utcOffset "function returns the real offset from UTC, not the reverse offset"
* add utcOffset() to DateTime interface
method returns the UTC offset as a number of minutes
* Fixed test
* Feat: initial disable user UI
* batch disable users
* batch revoke users tokens
* split batch disable user and revoke token
* API: get users with auth info and isExternal flag
* fix tests for batch disable users
* Disable users: show is user external or not
* Users: refactor /api/users/search endpoint
* Users: use alias for "user" table
* Chore: add BatchDisableUsers() to the bus
* Users: order user list by id explicitly
* Chore: switch back to /api/users/search endpoint
* Users: move disable button to user profile page
* Users: return AuthModule from /api/users/:id endpoint
* Users: do not return unused fields
* Users: mute auth badge for disabled users
* Users: move disable button to the user section
* Users: fix SearchUsers method after last changes
* User: return auth module as array for future purposes
* User: tests for SearchUsers()
* User: return only latest auth module in SearchUsers()
* User: fix JOIN, get only most recent auth module
* Users: fix ldap badge after backed changes
* Users: show tooltip for inactive disable/enable button
* Users: move delete button to edit user view
* Users: put deactivated badge on the user list
* Users: minor refactor
* Users: adjust deactivated badge style
* Minor design changes
* batch disable users
* batch revoke users tokens
* split batch disable user and revoke token
* API: get users with auth info and isExternal flag
* fix tests for batch disable users
* Users: refactor /api/users/search endpoint
* Users: use alias for "user" table
* Chore: add BatchDisableUsers() to the bus
* Users: order user list by id explicitly
* Users: return AuthModule from /api/users/:id endpoint
* Users: do not return unused fields
* Users: fix SearchUsers method after last changes
* User: return auth module as array for future purposes
* User: tests for SearchUsers()
* User: return only latest auth module in SearchUsers()
* User: fix JOIN, get only most recent auth module
* WIP: initial panel links editor
* WIP: Added dashboard migration to new panel drilldown link schema
* Make link_srv interpolate new variables
* Fix failing tests
* Drilldown: Add context menu to graph viz (#17284)
* Add simple context menu for adding graph annotations and showing drilldown links
* Close graph context menu when user start scrolling
* Move context menu component to grafana/ui
* Make graph context menu appear on click, use cmd/ctrl click for quick annotations
* Move graph context menu controller to separate file
* Drilldown: datapoint variables interpolation (#17328)
* Add simple context menu for adding graph annotations and showing drilldown links
* Close graph context menu when user start scrolling
* Move context menu component to grafana/ui
* Make graph context menu appear on click, use cmd/ctrl click for quick annotations
* Add util for absolute time range transformation
* Add series name and datapoint timestamp interpolation
* Rename drilldown link variables tot snake case, use const values instead of strings in tests
* Bring LinkSrv.getPanelLinkAnchorInfo for compatibility reasons and add deprecation warning
* Rename seriesLabel to seriesName
* Drilldown: use separate editors for panel and series links (#17355)
* Use correct target ini context menu links
* Rename PanelLinksEditor to DrilldownLinksEditor and mote it to grafana/ui
* Expose DrilldownLinksEditor as an angular directive
* Enable visualization specifix drilldown links
* Props interfaces rename
* Drilldown: Add variables suggestion and syntax highlighting for drilldown link editor (#17391)
* Add variables suggestion in drilldown link editor
* Enable prism
* Fix backspace not working
* Move slate value helpers to grafana/ui
* Add syntax higlighting for links input
* Rename drilldown link components to data links
* Add template variabe suggestions
* Bugfix
* Fix regexp not working in Firefox
* Display correct links in panel header corner
* bugfix
* bugfix
* Bugfix
* Context menu UI tweaks
* Use data link terminology instead of drilldown
* DataLinks: changed autocomplete syntax
* Use singular form for data link
* Use the same syntax higlighting for built-in and template variables in data links editor
* UI improvements to context menu
* UI review tweaks
* Tweak layout of data link editor
* Fix vertical spacing
* Remove data link header in context menu
* Remove pointer cursor from series label in context menu
* Fix variable selection on click
* DataLinks: migrations for old links
* Update docs about data links
* Use value time instead of time range when interpolating datapoint timestamp
* Remove not used util
* Update docs
* Moved icon a bit more down
* Interpolate value ts only when using __value_time variable
* Bring href property back to LinkModel
* Add any type annotations
* Fix TS error on slate's Value type
* minor changes
* tsdb: add support for setting debug flag of tsdb query
* alerting: adds debug flag in eval context
Debug flag is set when testing an alert rule and this debug
flag is used to return more debug information in test aler rule
response. This debug flag is also provided to tsdb queries so
datasources can optionally add support for returning additional
debug data
* alerting: improve test alert rule ui
Adds buttons for expand/collapse json and copy json to clipboard,
very similar to how the query inspector works.
* elasticsearch: implement support for tsdb query debug flag
* elasticsearch: embedding client response in struct
* alerting: return proper query model when testing rule
* Feature: Introduce a grafana-cli wrapper
When our users install the *nix packed version of grafana, tendency is to use the services and scripts installed as part of the package for grafana-server. These leverage the default configuration options by specifying the several default paths.
This introduces a similar approach for the grafana-cli binary. We exposed it through a wrapper to ensure a proper configuration is in place. To enable that, we add the .real suffix to the original binary (grafana-cli.real) and then use a bash script named grafana-cli as the wrapper.
* Make the config and homepath flags global
* Introduce `configOverrides` as a global flag
This flag allows us to pass configuration overrides as a string.
The string follows the convention of configuration arguments separated by a space e.g. "cfg:default.paths.data=/dev/nullX cfg:default.paths.logs=/dev/nullX"
Also, it is backwards compatible with similar the previous configuration method through tailing arguments. Tailing arguments take presedence over the configuration options string.
* Only log configuration information in debug mode
* Move the grafana-cli binary to $GRAFANA_HOME/bin
As part of the package install process, we copy all the release files and
directories into the grafana home directory. This includes the /bin folder
from where we copied the binaries into their respective destinations.
After that, the /bin folder gets deleted as we don't want to keep
duplicates of the binaries around.
As part of this commit, we moved the re-creation of /bin within
grafana-home and the copy of the original binary (again) after the
folder gets deleted.
* Don't display changelog category title when no items
The output of the changelog is meant to be copy/pasted with ease. When a
changelog category does not contain items is better to not display title
at all thus avoiding having the manually modify the output as we include
it in the steps of the process.
* Introduce a CLI task to close milestones whilst doing a Grafana release
As part of a Grafana release, we need to eventually close the GitHub
milestone to indicate is done and remove all the cherry-pick labels from
issues/prs within the milestone to avoid our cherry-pick CLI command to
pick them up on the next release.
* Abstract the GitHub client into a module
* Introduce `GitHubClient` to all CLI tasks
* feat: Add new picker to DashNavTimeControls
* chore: noImplicitAny limit reached
* chore: noImplicityAny fix
* chore: Add momentUtc helper to avoid the isUtc conditionals
* chore: Move getRaw from Explore's time picker to grafana/ui utils and rename to getRawRange
* feat: Use helper functions to convert utc to browser time
* fix: Dont Select current value when pressing tab when using Time Picker
* fix: Add tabIndex to time range inputs so tab works smoothly and prevent mouseDown event to propagate to react-select
* fix: Add spacing to custom range labels
* fix: Updated snapshot
* fix: Re-adding getRaw() temporary to fix the build
* fix: Disable scroll event in Popper when we're using the TimePicker so the popup wont "follow" the menu
* fix: Move all "Last xxxx" quick ranges to the menu and show a "UTC" text when applicable
* fix: Add zoom functionality
* feat: Add logic to mark selected option as active
* fix: Add tooltip to zoom button
* fix: lint fix after rebase
* chore: Remove old time picker from DashNav
* TimePicker: minor design update
* chore: Move all time picker quick ranges to the menu
* fix: Remove the popover border-right, since the quick ranges are gone
* chore: Remove function not in use
* Fix: Close time picker on resize event
* Fix: Remove border bottom
* Fix: Use fa icons on prev/next arrows
* Fix: Pass ref from TimePicker to TimePickerOptionGroup so the popover will align as it should
* Fix: time picker ui adjustments to get better touch area on buttons
* Fix: Dont increase line height on large screens
* TimePicker: style updates
* Fix: Add more prominent colors for selected dates and fade out dates in previous/next month
* TimePicker: style updates2
* TimePicker: Big refactorings and style changes
* Removed use of Popper not sure we need that here?
* Made active selected item in the list have the "selected" checkmark
* Changed design of popover
* Changed design of and implementation of the Custom selection in the dropdown it did not feel like a item you
could select like the rest now the list is just a normal list
* TimePicker: Refactoring & style changes
* TimePicker: use same date format everywhere
* TimePicker: Calendar style updates
* TimePicker: fixed unit test
* fixed unit test
* TimeZone: refactoring time zone type
* TimePicker: refactoring
* TimePicker: finally to UTC to work
* TimePicker: better way to handle calendar utc dates
* TimePicker: Fixed tooltip issues
* Updated snapshot
* TimePicker: moved tooltip from DashNavControls into TimePicker
* WIP prometheus editor same in panel
* Dont use panel in plugin editors
* prettiered modified files
* Fix step in external link
* Prevent exiting edit mode when slate suggestions are shown
* Blur behavior and $__interval variable
* Remove unused query controller
* Basic render test
* Chore: Fixes blacklisted import
* Refactor: Adds correct start and end time
Adds a first version of project documentation/guideline for triaging
of issues. This adds some additional content and context so that
the issue triage process can be understood by both maintainers
and existing/new contributors and other interested parties.
Co-Authored-By: Andrej Ocenas <mr.ocenas@gmail.com>
Closes#17648
* Explore: Improves performance of Logs element by limiting re-rendering
Re-renders only when query has finished executing or when deduplication
strategy changes.
Closes#17663
* Explore: Adds logsHighlighterExpressions as prop to consider when re-rendering Logs
* Explore: Prometheus query errors now show
Fixes: #17435
* Explore: Adds test to ensure prometheus query errors are reported
* Explore: removes implicit anys introduced previously
`grafana-cli` uses the third-party library to define the flags and not
the standard library. Using `flag.Parse` conflicts with the defined
flags from our third-party library.
In the case where `flag.Parse` is used, the CLI assumes that definitions
provided are not needed and will not define them; producing errors of
the kind `flag provided but not defined --example-flag`.
Using the context to read any arguments (including flags) is the
recommended approach by the third-party library.
* Chore: Remove implicit anys from ResultProcessor and tests
* Chore: Removes implicit anys for /loki/**/*.ts
* Chore: Removes implicit anys for prometheus/**/*
grafana-cli should allow configuration overrides to be received from the command line. e.g.
```
grafana-cli admin reset-password cfg:default.paths.logs=custom/log/directory/
```
Seems like we missed the inclusion of `flag.Parse` as we run the command, to be able to consume them.
Additionally, it'll be useful for the user to know whenever these are being overriden or not - hence the addition of logging the configuration to be used as we run the command.
* Fix: Filters Tags and Values depending on options passed
Fixes: #17507
* Fix: Makes sure options is not undefined
* Fix: Fixes tests and small button refactor
* Chore: PR comments
* LDAP: use only one struct
* Use only models.ExternalUserInfo
* Add additional helper method :/
* Move all the helpers to one module
* LDAP: refactoring
* Rename some of the public methods and change their behaviour
* Remove outdated methods
* Simplify logic
* More tests
There is no and never were tests for settings.go, added tests for helper
methods (cover is now about 100% for them). Added tests for the main
LDAP logic, but there is some stuff to add. Dial() is not tested and not
decoupled. It might be a challenge to do it properly
* Restructure tests:
* they wouldn't depend on external modules
* more consistent naming
* logical division
* More guards for erroneous paths
* Login: make login service an explicit dependency
* LDAP: remove no longer needed test helper fns
* LDAP: remove useless import
* LDAP: Use new interface in multildap module
* LDAP: corrections for the groups of multiple users
* In case there is several users their groups weren't detected correctly
* Simplify helpers module
* ensure that empty Elasticsearch queries are properly set to *. Fixes issue that appears when passing raw data from variables.
* combine null check and empty check into one
* Implementation of optimistic lock pattern
Try to insert the remote cache key and handle integrity error
* Remove transaction
Integrity error inside a transaction results in deadlock
* Remove check for existing remote cache key
Is no longer needed since integrity constrain violations are handled
* Add check for integrity constrain violation
Do not update the row if the insert statement fails
for other than an integrity constrain violation
* Handle failing inserts because of deadlocks
If the insert statement fails because of a deadlock
try to update the row
* Add utility function for returning SQL error code
Useful for debugging
* Add logging for failing expired cache key deletion
Do not shallow it completely
* Revert "Add utility function for returning SQL error code"
This reverts commit 8e0b82c79633e7d8bc350823cbbab2ac7a58c0a5.
* Better log for failing deletion of expired cache key
* Add some comments
* Remove check for existing cache key
Attempt to insert the key without checking if it's already there
and handle the error situations
* Do not propagate deadlocks created during update
Most probably somebody else is trying to insert/update
the key at the same time so it is safe enough to ignore it
Also adds tests to validate behaviour
Query now reruns when filter is removed
Changes <AdHocFilterField /> such that after a measurement and field have been chosen,
just a '+' button is displayed, rather than an empty <AdHocFilter />
Closes#17544Closes#17497
* Explore: Runs query when measurement/field and pairs are select in logs mode for influx
Closes#17500
* Explore: Modifies logic determining when to auto-run query during influx logs mode
Also adds test to validate this logic
* Influx: Adds start page for logs in Explore
Closes#17499
* Influx: Rebased with master and removed conditional display of cheat sheet in explore
Cheat sheet now displays during both Metrics and Logs mode, though this is only
temporary.
* x_xss_protection
* strict_transport_security (HSTS)
* x_content_type_options
these are currently defaulted to false (off) until the next minor release.
fixes#17509
* Fix: Upgrade hugo wip
* Chore: Rename index to _index for latest hugo
* Chore: Use relative refs, no starting slash
* Feat: Add possibility to mount layouts from grafana.org project
* Add scaling toggle to Singlestat panel
This toggle allows a user to choose between auto scaling or
zero-based scaling.
* Update Singlestat docs to include Zero Scale option
* Add min/max config to Singlestat sparklines y axis
* Start user auth token list on user profile (#16223)
* Now session found and first, better os regex (#16223)
* Revoke for user and admin user token manage (#16223)
* Tidying and styling (#16223)
* Tidying and styling (#16223)
* Update to use #16222 (#16223)
* Update for changes to 16222
* update per api issue
* Feature: Parse user agent string in user auth token api response (#16222)
* Adding UA Parser Go modules attempt (#16222)
* Bring user agent vals up per req
* fix tests
* doc update
* update to flatten, no maps
* update doc
* wip: fix remote cache for redis
connstr parsing and non-negative expires for #17377
TODO: finish parse, check zero case, find out why negative duration in the first place
* finish parse.
Still TODO, find out negative value, and decide if would be better to make database specific entries in the .ini file
* update ini files
* remove accidental uncomment in defaults.ini
* auth_proxy: expiration non-negative so expiration is not in the past
* fix test, revert neg in redis
* review: use errutil
* Wip: Intial commit
* Wip: Adds intial InfluxLogsQueryField
* Refactor: Adds measurements to InfluxLogQueryField
* Style: Tweaks styles and adds chosen measurement to measurements
* Refactor: Adds remove filter row
* refactor: make influx datasource typed
Uses the new api for exporting the plugin.
* adds metricFindQuery to DataSourceApi
metricFindQuery, getTagKeys and getTagValues now returns a promise
* influx: minor improvements
Limits logs result to 1000.
Don't show adhoc filter until measurement have been selected.
* Refactor: Adds fields to Cascader and uses chosen field as log column
Co-authored-by: Marcus <marcus.efraimsson@gmail.com>
Same idea as with the `gosec`, `revive` and etc.
Allows you to execute `make bra` as pinned local dependency instead
as global one. And therefore alleviates dependency installation issues.
README also updated - I was thinking to provide verbose installation instructions
for it. Since with that way we assume make is installed on the
developer system.
But it might be premature right now?
The range variables get filled with the range from the query options,
not with the range in the timeSrv object. This means that panels that
use a relative time override get the correct values from the __range
variables.
Fixes#17102
This escape is currently not happening which breaks multi-value queries with
'|' characters in the variable value.
Added tests for 'interpolateQueryExpr' which should possibly be private, but is difficult to
test due to TemplateSrv calling it.
Closes#16840
Otherwise changed data will not get refreshed to the previous
state.
Which I think is not evident (unless you are familar with docker-compose).
and therefore error-prone (at least it did for me)
xorm introduced some changes in
https://github.com/go-xorm/xorm/pull/824 and
https://github.com/go-xorm/xorm/pull/876 which by default will use
public as the postgres schema and this was a breaking change compared
to before. Grafana has implemented a custom postgres dialect so above
changes wasn't a problem here. However, Grafana's custom database
migration was using xorm dialect to check if the migration table exists
or not.
For those using a custom search_path (schema) in postgres configured on
server, database or user level the migration table check would not find
the migration table since it was looking in public schema due to xorm
changes above. This had the consequence that Grafana's database
migration failed the second time since migration had already run
migrations in another schema.
This change will make xorm use an empty default schema for postgres and
by that mimic the functionality of how it was functioning before
xorm's changes above.
Fixes#16720
Co-Authored-By: Carl Bergquist <carl@grafana.com>
* Refactor: Removes replaceUrl from actions
* Refactor: Moves saveState thunk to epic
* Refactor: Moves thunks to epics
* Wip: removes resulttype and queries once
* Refactor: LiveTailing uses observer in query
* Refactor: Creates epics folder for epics and move back actioncreators
* Tests: Adds tests for epics and reducer
* Fix: Checks for undefined as well
* Refactor: Cleans up previous live tailing implementation
* Chore: merge with master
* Fix: Fixes url issuses and prom graph in Panels
* Refactor: Removes supportsStreaming and adds sockets to DataSourcePluginMeta instead
* Refactor: Changes the way we create TimeSeries
* Refactor: Renames sockets to streaming
* Refactor: Changes the way Explore does incremental updates
* Refactor: Removes unused method
* Refactor: Adds back Loading indication
With live tailing introduced in Explore we now have a lot of actions dispatching and the Redux Dev Tools doesn't cope with the amount and rate of actions and crashes. This PR turns on redux action logging when you add logActions=true in the url and turns it off if you refresh the page or add logActions=false in the url.
* Refactor: Adds better error message and removes chromium download progess
* Test: Adds e2e tests to pr builds for testing purpose
* Tests: Changes path to screenshots
* Tests: Adds failing test just to test message and artifacts
* Tests: Removes failing test
* should be 'Tags' not 'All'
* fix poor wording in 'Match any' tooltip
* add tooltip for 'Tags' input (untested! and can probably be worded
better, i just don't know enough about the implementation)
* mitigate https://www.owasp.org/index.php/CSV_Injection
- prepend csv cell values that begin with -, +, = or @ with '
- trim trailing whitespace from all csv values
* test for csv formula injection mitigation
When accessing the `series` property of query results, if a query is
hidden, an exception is thrown. This is caused by lack of checks to
verify that the query result exists before accessing the `series`
property.
Closes#17112
* Fix: change and to and so not clashing with grafana vars (#16365)
* Fix: change and to and so not clashing with grafana vars (#16365)
* Fix: update now to datetime (#16365)
* Fix: test should look for datetime instead of now (#16365)
* Fix: _az suffix to datasource convention (#16365)
* Fix: convert vars to macro, update doc (#16365)
* Fix: convert vars to macro, update doc (#16365)
* Fix: remove support for time vars (#16365)
* Fix: confilct from master
* add migration on editor open
* fix migration var name
If a field or a label named level is returned from datasource that is
used as log level for the logs result instead of parsing the log level
from the message.
Closes#17122
Adds a new [server] setting `serve_from_sub_path`. By enabling
this setting and using a subpath in `root_url` setting, e.g.
`root_url = http://localhost:3000/grafana`, Grafana will be accessible
on `http://localhost:3000/grafana`. By default it is set to `false`
for compatibility reasons.
Closes#16623
With the previous configuration `docker-compose build` was always failing.
This moves the dockerfiles in the parent dir and changes paths as a result.
Ref moby/moby#2745
* Removes Add/Remove methods
* Publicise necessary fields and methods so we could extend it
* Publicise mock API
* More comments and additional simplifications
* Sync with master
Still having low coverage :/ - should be addressed in #17208
Adds an additional sqlite error code 5 (SQLITE_BUSY) to the
transaction retry handler to add retries when sqlite
returns database is locked error.
More info: https://www.sqlite.org/rescode.html#busy
Ref #17247#16638
* Move log's typings into grafana/ui
* Update the way context is retrieved for Loki
Major changes:
1. getLogRowContext expects row to be of LogRowModel type
2. getLogRowContext accepts generic options object, specific to a datasource of interest. limit option has been removed, and now it's a part of Loki's context query options (see below)
3. LogRowContextProvider performs two queries now. Before, it was Loki ds that performed queries in both directions when getLogRowContext.
4. Loki's getLogRowContext accepts options object of a type:
interface LokiContextQueryOptions {
direction?: 'BACKWARD' | 'FORWARD';
limit?: number;
}
This will enable querying in either direction independently and also slightly simplifies the way query errors are handled.
LogRowContextProvider maps the results to a Loki specific context types, basically string[][], as raw log lines are displayed in first version.
Fixes issue of the final confirmation prompt (the one to confirm the actual npm publish) being invisible, making it impossible to release by anyone but me.
Also, before the release is created I'm assuring previous release bundle is remove (otherwise tests and checks would fail)
* azuremonitor: revert to clearing chained dropdowns
After feedback from users, changing back to clearing
dropdowns to the right in the chain. E.g. if the user
changes the subscription dropdown which is first in
the chain then all the dependent dropdowns to the right
should be cleared (reset to default values).
Also, now triggers getting subscriptions every time the
dropdown menu is shown rather than just the first time.
It is apparently common to add subscriptions while
building queries.
* AzureMonitor: docs for multiple subscriptions
Also, links to images in Grafana.org instead of the images
in the plugin GitHub repo.
* Update docs/sources/features/datasources/azuremonitor.md
Co-Authored-By: Marcus Efraimsson <marcus.efraimsson@gmail.com>
* Update docs/sources/features/datasources/azuremonitor.md
Co-Authored-By: Marcus Efraimsson <marcus.efraimsson@gmail.com>
* docs: fix auto format errors
VS code automatically escapes the dollar sign.
* Users: add is_disabled column
* Users: disable users removed from LDAP
* Auth: return ErrInvalidCredentials for failed LDAP auth
* User: return isDisabled flag in user search api
* User: mark disabled users at the server admin page
* Chore: refactor according to review
* Auth: prevent disabled user from login
* Auth: re-enable user when it found in ldap
* User: add api endpoint for disabling user
* User: use separate endpoints to disable/enable user
* User: disallow disabling external users
* User: able do disable users from admin UI
* Chore: refactor based on review
* Chore: use more clear error check when disabling user
* Fix login tests
* Tests for disabling user during the LDAP login
* Tests for disable user API
* Tests for login with disabled user
* Remove disable user UI stub
* Sync with latest LDAP refactoring
* Apply panel options defaults on panel init and on save model retrieval
* Remove unnecessary argument, added tests
* Make FieldPropertiesEditor statefull to enable onBlur changes
* Remove unnecessary import
* Post-review updates
Fixes#17154
* fix: azuremonitor adds multi-sub support to alerting
* fix: AzureMonitor missing parameter in metadata func
getMetricMetadata function when called in the query ctrl
was missing a parameter for Subscription Id.
Also, made some tweaks to what happens when a chained
dropdown is changed to not reset all the fields that
are dependent on it.
Adds logs scenario which is quite basic and not that smart
to begin with. This will hopefully ease development of
Explore and support for logs in Grafana.
This makes sure the scenarios returned from API are sorted in a consistent
way and by that makes the values in scenario drop down always presented
ordered instead of jumping around.
* Fix: the type is not set so can check for columns and rows to validate is table (#16996)
* Fix: the type is not set so can check for columns and rows to validate is table (#16996)
* Fix: fix no table check and tests (#16996)
* Wip: Initial commit
* Refactor: Adds support in Loki datasource for streaming
* Refactor: Adds Live option to RefreshInterval
* Refactor: Adds styles to logrows
* Style: Reverses the order of Explore layout on Live
* Refactor: Adds LiveLogs component
* Tests: Adds tests for epics
* Style: Adds animation to Live in RefreshPicker
* Refactor: Adds ElapsedTime and progress line to LiveLogs
* Style: Adds specific colors to each theme
* Refactor: Adds support for Lokis new API
* Fix: Adds null to resulting empty array
* Refactor: Limits the rate of incoming messages from websockets
* Refactor: Throttles messages instead for simplicity
* Refactor: Optimizes row processing performance
* Refactor: Adds stop live button
* Fix: Fixes so that RefreshPicker shows the correct value when called programmatically
* Refactor: Merges with master and removes a console.log
* Refactor: Sorts rows in correct order and fixes minor UI issues
* Refactor: Adds minor improvments to sorting and container size
This adds some logic to identify if the user is selecting
text and if so disables parsing of log messages on hover.
This should resolve the issue of selecting log lines to be
copied and the selection is truncated.
Fixes#17072
* Extend DataSourceAPI to enable log row context retrieval
* Add react-use package
* Display log row context in UI
* Make Loki datasource return "after" log context in correct order
* Don't show Load more context links when there are no more new results
* Update getLogRowContext to return DataQueryResponse
* Use DataQueryResponse in log row context provider, filter out original row being duplicated in context
* incapsulates multipleldap logic under one module
* abstracts users upsert and get logic
* changes some of the text error messages and import sort sequence
* heavily refactors the LDAP module – LDAP module now only deals with LDAP related behaviour
* integrates affected auth_proxy module and their tests
* refactoring of the auth_proxy logic
Removes the functionality of being able to collapse/expand the logs
container.
When both graph and table are collapsed and you reload the page
then the start page should not be displayed.
When both graph and table are collapsed and you reload the page
then the graph and table panels should be displayed.
Fix so that reducer tests are run. On of the test used fit() instead of
it() which had the consequence of only 1 reducer test was executed
and the rest skipped. There was some failing tests that now is
updated and now passes.
Fixes#17098
Fixes a regression introduced in #16959 which removed datasource
property from changed query for angular query editors having the
result of loading explore URL's without datasource loaded the
default query in query editor and Explore.
Ref #16808
* Fix: if current sort key is not active column, do not use for sort and select next available active (#16980)
* Fix: only sort if sortkey is active column and table is active (#16980)
* Fix: sorting stacked series as legend. current descending order test (#16980)
* Fix: existing sort tests and added additional to prevent bug from resurfacing (#16980)
Adds basic support for switching between Metrics and Logs in Explore.
Currently only test datasource that supports both Metrics and Logs.
Summary of changes:
* Moves mode (Metric, Logs) selection to the left of datasource
picker and add some quick styling.
* Only trigger change in ToggleButton if not selected
* Set correct mode if datasource only supports logs
Closes#16808
* Chore: explore possibilities of using makefile
This is an exploratory commit - I wanted to see how
revive/gosec linters could be integrated with makefile and our build scripts.
Looks better then I expected :)
* Chore: make revive happy
Revive execution was not supplied with path, if you restore there is couple
errors that were popping up - so I fixed them
* Chore: make revive happy
* remotecache: avoid race condition in set
since set called the database twice without transactions another
operation could insert a value before the first operation completed.
which would raise an error on insert since the data have been inserted
by the other request.
closes#17079
* Fix: Only set scrollTop on CustomScroll element when it's needed and move arrow functions out of the props
* Fix: Update snapshots
* Minor refactoring to reuse same functions when rendering custom scrollbar
Fixes#16796
* Feature: provide multildap server configuration
* Add multildap server configuration for devenv
* Change some of the notes for openldap devenv configuration
* Change the maintainer label for *main* dockerfile and of the devenv one
Re-checked the multildap logic - everything seems to be working fine
* (feat/explore): Support for new LogQL filtering syntax
Loki is adding syntax to support chained filtering.
This PR adapts Grafana to support this.
- Send only `query` parameter in loki request
- Automatically wrap search text in simple syntax, e.g., `{} foo` is
sent as `{} |~ "foo"`.
* Adapted to regexp parameter staying on in Loki
* Dont wrap single regexp in new filter syntax
* Fix datasource test
* Fallback regexp parameter for legacy queries
* Fix search highlighting
* Make highlighting work for filter chains
* Fix datasource test
* fix(explore): Prevent double querying for Prometheus and Loki
- queries were triggered twice because two Enter handlers existed
- removed runner plugin from Loki and Prom query fields (runner plugin
is still being used in azure)
Part of #16995
* Set loki's mtrics capability to false
Loki is not a metrics store. Explore was using the `metrics` field in
the plugin definition to issue a second query run. But Loki shows only
one result viewer.
Fixes#16995
* Graph panel should support SeriesData
* Graph panel should support SeriesData
* same path for all series
* merge master
* support docs
* add test for processor
* Graph: removed old unused data processing logic
* Graph: minor refactoring data processing
* fix histogram
* set Count as title
Now when loading a query editor which changes the default query in the
constructor this will result in the actual updated query is used in
explore when running the query. Without this, the query used is sort
of out of sync between query editor and executed query.
* Wip: Removes queryTransactions from state
* Refactor: Adds back query failures
* Refactor: Moves error parsing to datasources
* Refactor: Adds back hinting for Prometheus
* Refactor: removed commented out code
* Refactor: Adds back QueryStatus
* Refactor: Adds scanning back to Explore
* Fix: Fixes prettier error
* Fix: Makes sure there is an error
* Merge: Merges with master
* Fix: Adds safeStringifyValue to error parsing
* Fix: Fixes table result calculations
* Refactor: Adds ErrorContainer and generic error handling in Explore
* Fix: Fixes so refIds remain consistent
* Refactor: Makes it possible to return result even when there are errors
* Fix: Fixes digest issue with Angular editors
* Refactor: Adds tests for explore utils
* Refactor: Breakes current behaviour of always returning a result even if Query fails
* Fix: Fixes Prettier error
* Fix: Adds back console.log for erroneous querys
* Refactor: Changes console.log to console.error
* move queryRunner to panelModel
* remove isEditing from PanelChrome
* move listener to QueriesTab
* use queryRunner on MetricsPanelCtrl
* Added interval back as prop, not used yet
* QueryRunner: worked on tests
* PanelQueryRunner: Refactoring, added getQueryRunner to PanelModel
* PanelQueryRunner: interpolatel min interval
* merge master and remove grafana-live
* Closes#15821
* sorry, now prettier
* select and deselect on filtered values works with Selected option now. Should the clearSelections function rather be renamed to selectOrClearValues? Selected should have another name too.
* Chore: Adds neccessary packages
* Wip: Initial dummy test in place
* Feature: Downloads Chromium if needed
* Fix: Adds global config object
* Refactor: Adds basic e2eScenario
* Build: Adds end to end tests to config
* Build: Changes end to end job
* Build: Adds browsers to image
* Build: Adds failing test
* Refactor: Adds first e2e-test scenario
* Fix: Ignores test output in gitignore
* Refactor: Adds compare screenshots ability
* Refactor: Removes unnecessary code
* Build: Removes jest-puppeteer
* Fix: Replaces test snapshots
* Refactor: Creates output dir if missing
* Refactor: Changes aria-labels to be more consistent
* Docs: Adds section about end to end tests
* Fix: Fixes snapshots
* Docs: Adds information about ENV variables
This adds support for using templated/dynamic urls in routes.
* refactor interpolateString into utils and add interpolation support for app plugin routes.
* cleanup and add error check for url parse failure
* add docs for interpolated route urls
Closes#16835
* chore: AzureMonitor typescript typings
Removes some types and using @grafana/ui types instead.
Adds some typing for the AzureMonitor query.
Also adds a getSubscriptions function that will used in the query
editor.
* fix: AzureMonitor adds back editor for annotation queries
This must have been broken for a month or more. Now possible to
edit annotation queries again.
* feat: Azure Monitor - support for multiple subscriptions
Adds a new dropdown for subscriptions in the query editor.
Defaults to the subscription id in jsonData for queries
that have no subscription id.
* feat: adds Azure Logs multi subscriptions support
The subscription id is needed for fetching the list of
workspaces. Adds support to the Log Analytics datasource
and to the annotations for Log Analytics to be able to
choose between multiple subscriptions.
* feat: AzureMonitor config page with multiple subs
Adds support for multiple subscriptions for the different
variations of configuring Azure Monitor and Azure Logs.
To be able to show a list of subscriptions, the config
has to be saved first - the plugin route fetches the
tenant id, client id and client secret from the database
so a call to get subscriptions requires that those
fields are saved first. If the page has not saved then
the use can manually paste in a subscription id.
* feat: support for multi subs in Azure Monitor variables
Adds an optional subscription parameter to the template
variable macros. Also adds a Subscriptions macro.
* fix: remove some implicit anys from tests
* Panels: Initial poc of no panel titles
* moving panel-container to DashboardPanel
* Starting to work
* Gauge fix
* Panels: tweaked panel padding and title z-index stuff
* Panels: changed panel padding a bit and simplified it by having same padding in vertical and horizontal
* Lots of tweaks to panel padding related stuff
* Updated snapshot
* Added test dashboard
* Final refactorings
* Trim title befgor applying panel-container--no-title class
* Remove unnecessary type annotation
* Panels: hasTitle no need to trim
* Gauge: fixed font family
This fixes a regression introduced in #16646 where using Elasticsearch
pre-v7.0 and alerting resulted in an error when trying to deserialize the
response of total number of hits.
Total number of hits is not in use by the backend so we're removing it
for now to make ES 6 and 7 being able to deserialize search responses
without errors.
Closes#15622
* Gauge: began looking at gauge title
* Gauge: title improvements
* Minor progres
* Gauge: title improvements, still needs more tweaking
* Gauge: title is starting to work ok
* Use selectThemeVariant
* Remove unused type
When allow_embedding is false (default) the Grafana backend
will set the http header `X-Frame-Options: deny` in all responses
to non-static content which will instruct browser to not allow
Grafana to be embedded in `<frame>`, `<iframe>`,
`<embed>` or `<object>`.
Closes#14189
Currently all API requests set Cache-control: no-cache to avoid browsers
caching sensitive data. This fixes so that all responses returned from
backend not are cached using http headers. The exception is the data proxy
where we don't add these http headers in case datasource backend needs
to control whether data can be cached or not.
Fixes#16845
* update single stat data model
* update single stat data model
* update single stat data model
* show limit default
* merge master
* change stat selector to single until #15954
* add tooltip
* begin children
* move options under display
* align gauge options
* add migration tests
* Docs: Updated changelog
* SingleStatPanels: show title if manual specified
* FieldPropEditor: Max should change max
* change stats to calcs in config
* remove prefix/suffix
* add test
* abort field cycle when passed the limit
* stub a better test
* move title to Field
* remove title
* try this again
* use element rather than grid position
* adding back console output to debug gridPos alternative
* less logging
* simplify
* subscribe/unsubscribe to event streams when view changes
* Panels: Minor change to lazy loading
A new parameter `queryMode` is added to the InfluxDB datasource to provide a way to use POST instead of GET when querying the database. This prevents to get any error when querying the database with a heavy request.
Default configuration is kept to GET for backward compatibility. Tests and documentation have been added for this new behaviour.
* Added search-query-parser package
* Migrate search input field to react and enable current folter filtering
* Reveiw changes
* FIx tags
* Fix event handlers passed to html elements directly
* noImplicitAny fix
* Debounce search method in search controller
* Search: have clear reset query as well
This fixes a regression introduced by #16724 when datasource is configured
to use HTTP method POST and testing the datasource which results in an
'options.headers is undefined'. Same error probably happens if datasource
is configured to use basic auth and testing datasource.
* speed up circleci build
* convert build.sh to functions and add args for different build types
* add yarn cache
* add build latest to packaging step
* fast build should not try to tag non-amd builds
* remove signing step for prs-and-branches
If Grafana rotates the user's auth token during a request to the data
source proxy it will set the Set-Cookie header with new auth token in
response before proxying the request to the datasource.
Before this fix the Set-Cookie response header was cleared after the
proxied request was finished to make sure that proxied datasources
cannot affect cookies in users browsers. This had the consequence
of accidentally also clearing the new auth token set in Set-Cookie
header.
With this fix the original Set-Cookie value in response header is now
restored after the proxied datasource request is finished. The existing
logic of clearing Set-Cookie response header from proxied request
have been left intact.
Fixes#16757
This is the first step moving towards Explore supporting logs for
more datasources than Loki. In the first step we move all the log
processing from Loki into Explore.
- Make explore convert logs result returned from datasources to SeriesData,
if needed, and for now convert SeriesData to LogsModel.
- Loki datasource query now returns SeriesData and all
processing have been moved into explore instead.
- Removed key from LogRowModel and use log row indexes as
the unique key instead.
- Removed id from LogsModel since it looks like it's not in use.
- Introduced a new class FieldCache which is convenient to use when
looking up multiple fields and/or field types and series values.
Closes#16287
* Add file path to metadata and show it in dialogs
* Make path relative to config directory
* Fix tests
* Add test for the relative path
* Refactor to use path relative to provisioner path
* Change return types
* Rename attribute
* Small fixes from review
* Provisioning: Trying to fix test
* Use better sync strategy for test
* Lower the timeout
* Remove commented code
Co-Authored-By: aocenas <mr.ocenas@gmail.com>
Explore now uses the timezone of the user to decide if local browser
time or UTC should be used.
- Now uses TimeRange instead of RawTimeRange in explore item
state tree and only parsing actual time in a few action
handlers.
- Time picker should now properly handle moving back/forward and
apply time range when both utc and non utc time zone.
- URL range representation is changed from YYYY-MM-DD HH:mm:ss
to epoch ms.
- Now uses AbsoluteTimeRange in graph component instead of moment.
- Makes a copy of the time range passed to timeSrv to make sure immutability
of explore time range when for example elasticsearch test datasources uses
timeSrv and sets a time range of last 1 min.
- Various refactorings and cleanup.
Closes#12812
* Feature: introduce LdapActiveSyncEnabled setting
We probably remove it after the active sync is done.
But at the moment we do not want to affect the current users
with not fully tested feature
* Chore: move settings in more logical order
* Mobile: Switch to mobile view already at md or lower breakpoint
* UX: Tweaked breakpoint so that media-breakpoint-up(md) will only apply to screens larger than normal ipad
* Updated snapshots
* Feature: add cron setting for the ldap settings
* Move ldap configuration read to special function
* Introduce cron setting (no docs for it yet, pending approval)
* Chore: duplicate ldap module as a service
* Feature: implement active sync
This is very early preliminary implementation of active sync.
There is only one thing that's going right for this code - it works.
Aside from that, there is no tests, error handling, docs, transactions,
it's very much duplicative and etc.
But this is the overall direction with architecture I'm going for
* Chore: introduce login service
* Chore: gradually switch to ldap service
* Chore: use new approach for auth_proxy
* Chore: use new approach along with refactoring
* Chore: use new ldap interface for auth_proxy
* Chore: improve auth_proxy and subsequently ldap
* Chore: more of the refactoring bits
* Chore: address comments from code review
* Chore: more refactoring stuff
* Chore: make linter happy
* Chore: add cron dep for grafana enterprise
* Chore: initialize config package var
* Chore: disable gosec for now
* Chore: update dependencies
* Chore: remove unused module
* Chore: address review comments
* Chore: make linter happy
CVE-2019-5428
Vulnerable versions: < 3.4.0
Patched version: 3.4.0
A prototype pollution vulnerability exists in jQuery versions < 3.4.0 that
allows an attacker to inject properties on Object.prototype.
https://nvd.nist.gov/vuln/detail/CVE-2019-5428
* Feature: add cron setting for the ldap settings
* Move ldap configuration read to special function
* Introduce cron setting (no docs for it yet, pending approval)
* Chore: address code review comments
Adds a new version option 7.0+ (70 internally).
Version 7.0+ doesn't include document types in index mappings
so support for handling this have been added.
Version 7.0+ returns number of hits in a different way so
support for handling this have been added.
Version 7.0+ doesn't support sending
max_concurrent_shard_requests in multisearch header so
support for sending this in query string have been added.
Update elastic6 docker block and dashboards (devenv) to use
6.7.1 images, filebeat index name is now filebeat-YYYY.MM.DD
and dashboard include correct tags and links.
Add elastic7 docker block and provisioning (devenv).
Updates documentation regarding new version.
Closes#15622
* Add api to reaload provisioning
* Refactor and simplify the polling code
* Add test for the provisioning service
* Fix provider initialization and move some code to file reader
* Simplify the code and move initialization
* Remove unused code
* Update comment
* Add comment
* Change error messages
* Add DashboardProvisionerFactory type
* Update imports
* Use new assert lib
* Use mutext for synchronizing the reloading
* Fix typo
Co-Authored-By: aocenas <mr.ocenas@gmail.com>
* Add docs about the new api
* Add value types with custom unmarshalling logic
* Add env support for notifications config
* Use env vars in json data tests for values
* Add some more complexities to value tests
* Update comment with example usage
* Set env directly in the tests, removing patching
* Update documentation
* Add env var to the file reader tests
* Add raw value
* Post merge fixes
* Add comment
* Introduced Abstract list, List and InlineList components for easier lists generation
* Enable custom item key on abstract list items
* Enable $.flot in storybook
* Expose onOptionsChange to react panel. Allow React panels to be function components
* Update type on graph panel options to group graph draw options
* Introduce GraphPanelController for state and effects handling of new graph panel
* Group visualisation related stories under Visualisations
* add folderUid to DashbaordsAsConfig structs and DashbardProviderConfigs struct, set these values in mapping func
look for new folderUid values in config_reader tests
set dashboard folder Uid explicitly in file_reader, which has no affect when not given
* formatting and docstrings
* add folderUid to DashbaordsAsConfig structs and DashbardProviderConfigs struct, set these values in mapping func
look for new folderUid values in config_reader tests
set dashboard folder Uid explicitly in file_reader, which has no affect when not given
* formatting and docstrings
* add folderUid option, as well as documentation for the rest of the fields
* add blank folderUid in devenv example.
* add folderUid to provisioning sample yaml
* instead of just warning, return error if unmarshalling dashboard provisioning file fails
* Removing the error handling and adding comment
* Add duplicity check for folder Uids
Co-authored-by: swtch1 <joshua.thornton@protonmail.com>
* Chore: remove session storage references
* Small refactoring of the settings module
* Update docs - remove references for the session storage
* Update config files (sample and default configs)
* Add tests for warning during the config load on defined storage cache
* Remove all references to session storage
* Remove macaron session dependency
* Remove leftovers
* Fix: address review comments
* Fix: remove old deps
* Fix: add skipStaticRootValidation = true to tests
* Fix: improve the docs and warning message
As per discussion in here - https://github.com/grafana/grafana/pull/16445/files#r273026255
* Chore: make linter happy
Fixes#16148
Ref #16114
* Do not override default `hide` value of variables
Some variables like `constant` are configured to
be hidden by default and this setting must be
treated with respect.
* make textBox variable visible by default
Fixes#16695
* move queryRunner to panelModel
* Added interval back as prop, not used yet
* PanelQueryRunner: Refactoring, added getQueryRunner to PanelModel
* PanelQueryRunner: interpolatel min interval
* move queryRunner to panelModel
* remove isEditing from PanelChrome
* move listener to QueriesTab
* Fixed issue with isFirstLoad set to false before loading state is Done
* QueryRunner: Fixed issue with error and delayed loading state indication
* Anoter fix to issues with multiple setState calls in observable callbacks
Moves query execution logic to PanelQueryRunner and structures PanelChrome so it subscribes to the query results rather than necessarily controlling their execution.
The iteration order over maps is not specified and is not guaranteed
to be the same from one iteration to the next. If a map entry that
has not yet been reached is removed during iteration, the corresponding
iteration value will not be produced. If a map entry is created during
iteration, that entry may be produced during the iteration or may be skipped.
The choice may vary for each entry created and from one iteration to
the next. If the map is nil, the number of iterations is 0.
https://golang.org/ref/spec#For_range
* removed unsused grafana-icon classes, replaced grafana-icons with gicons
* replaced old dashboard and datasource icons with gicon, fixed so icons on plugin list are shown
* removed unsused grafana-icon classes, replaced grafana-icons with gicons
* replaced old dashboard and datasource icons with gicon, fixed so icons on plugin list are shown
* replaced fontawesome cog, eye, link and edit with gicons
* updated snapshot
* fixed color of cog in dashboard nav, removed icons from buttons, ran preitterier on some files
* changed opacity on getting started icons and fixed getting started button
* .5 -> 0.5 fix for prettier
* Search: Fixes search limits and adds a page parameter
This adds a page parameter to search api without adding
any major breaking change.
It does at an api validation error when trying to use
a limit beyond 5000. This is a breaking change. We could
remove this and have it only in the docs and describe that this
is a limit that grafana will apply silently.
Fixes#16049
* Fix: Corrected wrong array slice change
* Docs: minor docs fix
* Search: fixed folder tests
* Fixed: Moved limit to correct inner query
* Search: moving limit check and page check
* Search: limit in handler is no longer needed
* fix: Lock version of dependencies
* fix: Lock version of devDependencies
* fix: Lock down grafana/ui npm versions + regenerate lockfile
* fix: Back some versions i tried to bump
* fix: Bump react and react-dom to latest
* chore: Remove types/react from resolutions
* fix: Lock eventemitter3 version in package.json
* pass query request/response to panel plugins
* rename finishTime to endTime
* move QueryResponseData to a sub variable
* rename to PanelData
* make data not optional
* make data not optional
* missing optional
* Chore: refactor auth proxy
Introduced the helper struct for auth_proxy middleware.
Added couple unit-tests, but it seems "integration" tests already cover
most of the code paths.
Although it might be good idea to test every bit of it, hm.
Haven't refactored the extraction of the header logic that much
Fixes#16147
* Fix: make linters happy
- guide shamelessly stolen from prometheus/prometheus
- updates local interface of oauth exchange
- updates local impl of hclogger
- bump jaeger client version
closes#16088
* Added RefreshButton
* Added RefreshSelect
* Added RefreshSelectButton
* Added RefreshPicker
* Removed the magic string Paused
* Minor style changes and using Off instead of Pause
* Added HeadlessSelect
* Added HeadlessSelect story
* Added SelectButton
* Removed RefreshSelectButton
* Added TimePicker and moved ClickOutsideWrapper to ui/components
* Added TimePickerPopOver
* Added react-calendar
* Missed yarn lock file
* Added inputs to popover
* Added TimePicker and RefreshPicker to DashNav
* Moved TimePicker and RefreshPicker to app/core
* Added react-calendar to app and removed from ui/components
* Fixed PopOver onClick
* Moved everything back to ui components because of typings problems
* Exporing RefreshPicker and TimePicker
* Added Apply and inputs
* Added typings
* Added TimePickerInput and logic
* Fixed parsing of string to Moments
* Fixed range string
* Styling and connecting the calendars and inputs
* Changed Calendar styling
* Added backward forward and zoom
* Fixed responsive styles
* Moved TimePicker and RefreshPicker into app core
* Renamed menuIsOpen to isOpen
* Changed from className={} to className=""
* Moved Popover to TimePickerOptionGroup
* Renamed all PopOver to Popover
* Renamed popOver to popover and some minor refactorings
* Renamed files with git mv
* Added ButtonSelect and refactored RefreshPicker
* Refactored TimePicker to use new ButtonSelect
* Removed HeadlessSelect as suggested
* fix: Fix typings and misc errors after rebase
* wip: Enable time picker on dashboard and add tooltip
* Merge branch 'master' into hugoh/new-timepicker-and-unified-component
# Conflicts:
# packages/grafana-ui/package.json
# packages/grafana-ui/src/components/Input/Input.test.tsx
# packages/grafana-ui/src/components/Input/Input.tsx
# packages/grafana-ui/src/utils/validate.ts
# public/app/features/dashboard/panel_editor/QueryOptions.tsx
# yarn.lock
* fix: Snapshot update
* Move TimePicker default options into the TimePicker as statics, pass the tooltipContent down the line when wanted and wrap the button in a tooltip element
* fix: Override internal state prop if we provide one in a prop
* Updated snapshots
* Let dashnav control refreshPicker state
* feat: Add a stringToMs function
* wip: RefreshPicker
* wip: Move RefreshPicker to @grafana/ui
* wip: Move TimePicker to @grafana/ui
* wip: Remove comments
* wip: Add refreshPicker to explore
* wip: Use default intervals if the prop is missing
* wip: Nicer way of setting defaults
* fix: Control the select component
* wip: Add onMoveForward/onMoveBack
* Remove code related to the new time picker and refresh picker from dashnav
* Fix: Typings after merge
* chore: Minor fix after merge
* chore: Remove _.map usage
* chore: Moved refresh-picker logic out of the refresh picker since it will work a little differently in explore and dashboards until we have replaced the TimeSrv
* feat: Add an Interval component to @grafana/ui
* chore: Remove intervalId from redux state and move setInterval logic from ExploreToolbar to its own Interval component
* feat: Add refreshInterval to Explore's URL state
* feat: Pick up refreshInterval from url on page load
* fix: Set default refreshInterval when no value can be retained from URL
* fix: Update test initial state with refreshInterval
* fix: Handle URLs before RefreshPicker
* fix: Move RefreshInterval to url position 3 since the segments can take multiple positions
* fix: A better way of detecting urls without RefreshInterval in Explore
* chore: Some Explore typings
* fix: Attach refresh picker to interval picker
* chore: Sass fix for refresh button border radius
* fix: Remove refreshInterval from URL
* fix: Intervals now start when previous interval is finished
* fix: Use clearTimeout instead of clearInterval
* fix: Make sure there's a delay set before adding a timeout when we have slow explore queries
* wip: Add refresh picker to dashboard
* feat: Add util for removing keys with empty values
* feat: RefreshPicker in dashboards and tmp rem out old RefreshPicker
* fix: Remove the jumpy:ness in the refreshpicker
* Changed placement and made it hide when your in dashboard settings
* chore: Move logic related to refresh picker out of DashNav to its own component
* feat: Add tooltip to refreshpicker
* fix: Fix bug with refreshpicker not updating when setting to 'off'
* fix: Make it possible to override refresh intervals using the dashboard intervals
* chore: Change name of Interval to SetInterval to align with ecmascripts naming since its basically the same but declarative and async
* fix: Use default intervals when auto refresh is empty in dashboard settings
* fix: Hide time/interval picker when hidden is true on the model, such as on the home dashboard
* fix: Interval picker will have to handle location changes since timeSrv wont
* RefreshPicker: Refactoring refresh picker
* RefreshPicker: minor refactoring
* fix label handling
* SEARCH() results could have multiple namespace, remove from legend
* divide GetMetricStatistics related code
* divide GetMetricData related code
* divide parseGetMetricDataResponse()
* divide parseGetMetricDataQuery()
* divide test code
* add test for GetMetricData
* add test for GetMetricData parse response
* fix bug of terminating gap
* fix gofmt
This is basically implementation of the https://github.com/grafana/grafana/issues/8900#issuecomment-435437167
points, except for the type conversion bit.
I tried to implement idea mentioned in cockroachdb ticket (see below).
And it is possible, but it complicates things as lot - not only we have to
have 4 SQL statements instead of one, but we would have to copy the column
structure as well - PK, FG, indexes and stuff, plus there will
be additional downtime with this approach.
So idea for this pull is to prepare our SQL as much as possible, so when
cockroachdb will add support for full type conversions, we could easilly add
support for it as well.
* Add `CASCADE` to `DROP INDEX` statement
* Make string conversions explicit
Thanks @Luit
Ref #8900
Ref cockroach/cockroach#9851
* Store passwords in secureJsonData
* Revert unnecessary refactors
* Fix for nil jsonSecureData value
* Remove copied encryption code from migration
* Fix wrong field reference
* Remove migration and provisioning changes
* Use password getters in datasource proxy
* Refactor password handling in datasource configs
* Add provisioning warnings
* Update documentation
* Remove migration command, moved to separate PR
* Remove unused code
* Set the upgrade version
* Remove unused code
* Remove double reference
* app pages
* app pages
* workign example
* started alpha support
* remove app stuff
* show warning on alpha/beta panels
* put app back on plugin file
* fix go
* add enum for PluginType and PluginIncludeType
* Refactoring and moving settings to plugins section
fixes#16529
Fixes#16507
Markdown formatting in VS Code converts from asterisks to underscores but this can be incorrect
in a case like _label_names()_. This fix escapes the underscores that should be kept.
Adds filebeat (log collector) to elasticsearch v6 docker block that
collects Grafana logs.
Also adds a new elasticsearch v6 datasource and test dashboard
thru provisioning.
* Unprovision dashboard in case of DisableDeletion = true
* Rename command struct
* Handle removed provision files
* Allow html in confirm-modal
* Do not show confirm button without onConfirm
* Show dialog on deleting provisioned dashboard
* Changed DeleteDashboard to DeleteProvisionedDashboard
* Remove unreachable return
* Add provisioned checks to API
* Remove filter func
* Fix and add tests for deleting dashboards
* Change delete confirm text
* Added and used pkg/errors for error wrapping
* Wip: virtualize suggestions list
* Refactor: Separate components to different files
* Refactor: Made TypeaheadItem a FunctionComponent using emotion
* Refactor: Use theme to calculate width instead of hardcoded values
* Refactor: Calculate list height and item size
* Style: Adds labels to emotion classes
* Refactor: Flattens CompletionItems to one list
* Chore: merge yarn.lock
* Refactor: Adds documentation popup on the side
* Refactor: Makes position of TypeaheadInfo dynamic
* Refactor: Calculations moved to separate file
* replaced colors for headingColor, link and linkDisabled with colors from grayscale, replaced colors for linkDisabled and linkHover with colors from grayscale, changed color for sha-modal-in-text to text-color-empahises
* fixed snapshot
* added new variables for height in theme, added height to gui button large, replaced add gicon with regular gicon, replaced + with gicon, changed button display to flex
* set fixed height to large button, removed xlarge button and replaced with large button
* removed button-mini and replaced with button-small, set fixed height to default button and button-small
* fixed padding for default and large button, fixed height for navbar button, fixed snapshots
* fixed padding and margin on navbar buttons
* gave special height to login btn-primary
* readded btn-mini class with same styling as btn-small and a deprecated notice
* fixed add panel widget buttons
Fixes bugs introduced in PR #14716 and #15146 also restores unit tests that where lost in the
move from kbn units to @grafana/ui units
Fixes#16068Fixes#16373
* WIP: began work on adding title support to bar gauge
* Feat: BarGauge progress
* wip: trying improve text size handling in bar gauge
* BarGauge: progress on title & value auto sizing
* BarGauge: more auto size handling
* bargauge: minor tweaks
* Added tests
* Refactoring: BarGauge refactoring moving css generation to seperate functions and adding some basic tests
* Refactoring VizRepeater and more
* Fix: updated and fixed tests
* wip: began work off removing meta and pluginExports from DataSourceApi interface
* WIP: changing how plugins are exports and loaded
* Down the refactoring rabit hole that keeps expanding
* TestData now returns DataSourcePlugin
* Refactoring: fixed app config page loading, type renamings and more typings
* Refactor: Correct casing on DatasourceStatus => DataSourceStatus
Fixes so it's possible to create new notification channel and providing uid.
Fixes better error/result handling when updating a notifcation channel.
Fixes#16372
Ref #16219#16012
* Style: made outlined buttons and used it in Alert component
* Refactor: clean up state on load data source failure
* Refactor: test data source thunk created
* Refactor: move logic to changeDatasource and call that from intialize
* Refactor: move load explore datasources to own thunk
* Refactor: move logic to updateDatasourceInstanceAction
* Tests: reducer tests
* Test(Explore): Added tests and made thunkTester async
* Fix(Explore): Fixed so that we do not render StartPage if there is no StartPage
* Fix(Explore): Missed type in merge
* Refactor: Thunktester did not fail tests on async failures and prevented queires from running on datasource failures
* Feat: Fadein error alert to prevent flickering
* Feat: Refresh labels after reconnect
* Refactor: Move useLokiForceLabels into useLokiLabels from PR comments
* Feat: adds refresh metrics to Prometheus languageprovider
* Style: removes padding for connected datasources
* Chore: remove implicit anys
Fixed bug introduced by replacing native input with @grafana/ui/Input component.
Switch's styling relies on native input checked attribute used in adjacent sibling selector. Because React based Input is wrapped in div, there was no chance for styling to work
Adds new alert settings for configuring timeouts and retries named
evaluation_timeout_seconds, notification_timeout_seconds
and max_attempts.
Closes#16240
Similar to how the react panels make sure all data is SeriesData before passing it to the react panels, this makes sure SeriesData is converted to TableData|TimeSeries before passing it to the angular panels.
It also changes the typing to encourage using SeriesData for future development
* big value component
* big value component
* editor for font and sparkline
* less logging
* remove sparkline from storybook
* add display value link wrapper
* follow tooltip
* follow tooltip
* merge master
* Just minor refactoring
* use series after last merge
* Refactoring: moving shared singlestat stuff to grafana-ui
* Refactor: Moved final getSingleStatDisplayValues func
See https://github.com/securego/gosec for more info.
Disabled a lot of rules. I guess we should go through them
and recheck if we really need to disable some
Fixes#16204
* repalced rems with pixels and variables
* replaced rems with pixels and variables
* removed last rems by deleting unused classes or replacing with pixels and variables
* restored edit-sidemenu etc with comment
* removed input padding variables and replaced with new inset variables, also removed unused class in _gf-form
* removed last input padding variable
* removed table-cell-padding variable
* added input padding variable to template file
* fixed input-padding variable
* removed regualt inset variable(for now), added input-padding to a class
* removed empty line
Since we do not like some of the default golint rules,
this commit proposes to use https://github.com/mgechev/revive.
And potential revive speed-up should't hurt :).
Right now, presented config (./conf/revive.toml) is permissive,
we might improve it over time however. Fixes for found revive
issues in the code are very limited so it wouldn't be large to review.
Also in this commit:
* Add annotations for makefile commands and declare phony targets
* Rename "gometalinter" script and CI command to "lint"
since we are doing there a bit more then using gometalinter package
* Add Makefile rules to .editorconfig
* Documentation which mentioned "golint" replaced with revive
Fixes#16109
Ref #16160
Fixes#14615.
Removes extra escaping for regex filter values when using ad hoc
filters for Prometheus. The extra escaping causes queries with
regex characters to be invalid.
GitHub pagination was limiting the result to 30 issues.
This fix makes the changelog script return up to 100
issues. Will have to add a loop to fetch more once we
merge more than 100 PR's that should be added to the
changelog.
Also, fixes a bug where issues that were not included
in the milestone were being returned.
Fixes#16040
Fix so that a template variable in the alias field is not interpolated on blur and only the value sent in the query is interpolated. Does a deep clone of the options.targets to avoid changing the original alias field.
* Docs: Updated changelog for 6.1 release
Also Updates the changelog cli task to group issues into bug fixes
and not bug fixes.
* Minor changelog fixes
Now returns uid in response to get notification channel by id.
Adds GET/PUT/DELETE support for notification channel by uid,
/api/alert-notifications/uid/:uid.
Break apart alerting and alert notification http api docs in two
pages and update documentation to make it up to date
with current implementation.
Fixes#16012
* set the plugin version if there is a migration handler
* only call panel migration if the version changes
* set the version after change also
* avoid NPE... check that we have options
* destroy is based on the previous panel type, not the next one
* Panels: Minor refactoring on panel plugin version code, #16186
* Migrated loki syntax and labels logic to useLokiSyntax hook
* Enable loki labels refresh after specified interval has passed
* Enable periodic loki labels refresh when labels selector is opened
* Fix prettier
* Add react-hooks-testing-library and disable lib check on typecheck
* Add tests for loki syntax/label hooks
* Move tsc's skipLibCheck option to tsconfig for webpack to pick it up
* Set log labels refresh marker variable when log labels fetch start
* Fix prettier issues
* Fix type on activeOption in useLokiLabel hook
* Typo fixes and types in useLokiSyntax hook test fixes
* Make sure effect's setState is not performed on unmounted component
* Extract logic for checking if is component mounted to a separate hook
* grafana/master: (107 commits)
another change that didn't come with earlier commit
change that didn't come with in last commit
reversed dashboard-padding
Update CloudWatch metrics/dimension list (#16102)
brought back dashboard-padding and panel-padding variables, made dashboard-padding more specific
fix(prometheus): Change aligment of range queries (#16110)
Minor refactoring of testdata query order PR #16122
cleaner version
maintain query order
Update PLUGIN_DEV.md
Merge with master, and updated logo and name
update table data model
fix(graphite): nonNegativeDerivative argument hidden if 0, fixes#12488
Correct table names of sql storage for remotecache
more fixes to snapshot
more fixes to snapshot
Fixed gofmt issue in PR #16093
removed empty space in snapshot
fix: Update snapshot related to new jest version
fixed snapshot for test
...
* grafana/master: (56 commits)
another change that didn't come with earlier commit
change that didn't come with in last commit
reversed dashboard-padding
Update CloudWatch metrics/dimension list (#16102)
brought back dashboard-padding and panel-padding variables, made dashboard-padding more specific
fix(prometheus): Change aligment of range queries (#16110)
Minor refactoring of testdata query order PR #16122
cleaner version
maintain query order
Update PLUGIN_DEV.md
Merge with master, and updated logo and name
more fixes to snapshot
more fixes to snapshot
removed empty space in snapshot
fixed snapshot for test
removed dashboard variables, removed headings-font-family variable, created theme variables for links and z-index, removed unused class in _panel_editor and _dashboard
Tooltip: show percent instead of value
Right tooltip position
Add "No data points" message
Improve tooltip look
...
- future alignment cause issues with rate charts and the display of last
values
- this change modifies the alignment to use the last available aligned
end date and no longer possibly requests data from the future
If an image section is included in the JSON payload for MS Teams alerts
when no image URL exists, rendering of the alert in the client fails.
This change makes sure that an image section is only included in the
JSON payload if an image URL exists.
Closes#16082
* grafana/master: (101 commits)
refactor: merged types and updated references
Remove leftover from first iteration
Snapshot update
fix: ts issue on SelectOption test
chore: Bump react and react-dom to 16.8.4
Update latest.json
Update templating.md
Update CHANGELOG.md
chore: cleaning up noimplicit anys in search_srv and tests progress: #14714
Fix threshold editor color picker not working for custom colors
Updated threshold editor test
Re-render gauge / singlestat panels when changing options
fix: refactored so members are loaded by TeamPages and use hideFromTabs instead of filtering out children in navModel
teams: explains the external property of a team membership.
fix: fixed snapshots and permission select not beeing able to click
fix: new team link goes nowhere for viewers
teams: refactor so that you can only delete teams if you are team admin
permissions: removes global access to bus from MakeUserAdmin.
teams: local access to bus, moving away from dep on global.
teams: better names for api permissions.
...
When user selected Custom as an option for a threshold colors, the Custom color picker did not work. The problem was caused by threshold model not including the default colors for fill and line colors when custom was selected. Now, when changing the type to custom, the default valoues are set.
* grafana/master:
docs: renamed file and added redux framework file
docs: moved examples to frontend.md
docs: intial draft for frontend review doc
Use ora#fail instead of console.log
Remove .only function
Add more patterns to no-only-test task
* grafana/master:
Explore: Fix log stats for long labels
dont test exists in the test... it will fail if not found
add random_walk_table scenario
add test file
add startAt to random walk scenario
* grafana/master: (75 commits)
Explore: Fix log stats for long labels
dont test exists in the test... it will fail if not found
add random_walk_table scenario
add test file
add startAt to random walk scenario
get values from base options
use singlestat base where appropriate
feature(explore/table): Add tooltips to explore table (#16007)
Update changelog
Add check for Env before log
Update index.md
chore: Cleaning up implicit anys in manage_dashboard.ts and manage_dashboard.test.ts progress: #14714
chore: Cleaning up implicit anys in app.ts progress: #14714
changelog: adds note about closing #15836
changelog: adds note about closing #6359 and #15931
add partial
no inheratance
improve single stat display
revert most options sharing
add migration tests
...
* grafana/master: (57 commits)
feature(explore/table): Add tooltips to explore table (#16007)
Update changelog
Add check for Env before log
Update index.md
chore: Cleaning up implicit anys in manage_dashboard.ts and manage_dashboard.test.ts progress: #14714
chore: Cleaning up implicit anys in app.ts progress: #14714
changelog: adds note about closing #15836
changelog: adds note about closing #6359 and #15931
add partial
Add check so that header is not sent for anonymous users
Update config docs
Add custom header with grafana user and a config switch for it
changelog: adds note about closing #10816
use constants for cache type
makes variables template prettier complient
white space formating
changelog: adds note about #15744
updates old distcache names
dont allow inifinite expiration
return error if cache type is invalid
...
* grafana/master: (44 commits)
feature(explore/table): Add tooltips to explore table (#16007)
Update changelog
Add check for Env before log
Update index.md
chore: Cleaning up implicit anys in manage_dashboard.ts and manage_dashboard.test.ts progress: #14714
chore: Cleaning up implicit anys in app.ts progress: #14714
changelog: adds note about closing #15836
changelog: adds note about closing #6359 and #15931
add partial
Add check so that header is not sent for anonymous users
Update config docs
Add custom header with grafana user and a config switch for it
changelog: adds note about closing #10816
use constants for cache type
updates old distcache names
dont allow inifinite expiration
return error if cache type is invalid
use `Get` instead of `Find`
avoid exposing cache client directly
add docs about remote cache settings
...
A datasource plugin must return a list of tags in the 'tags' field of
the annotationQuery result. A string 'test' would otherwise result in
4 tags in Grafana: 't','e','s','t'.
* grafana/master: (95 commits)
Fixed issue with alert links in alert list panel causing panel not found errors, fixes#15680
Add comments
Add simple test for the ColorPicker
Use render props pattern in color picker
Move ColorPicker trigger to separate component and cleanup css
Improved error handling when rendering dashboard panels, fixes#15913
fix return type
Only send ci metrics to hosted metrics instance
adding types
Added back branch guard
moved delete button from sidebar to general tab and renamed it
Refactoring the ci metrics a bit more making it easier to re-use
removed unused and very specific variables, also variables with same value as general variable
reduce loglevel to debug
Updated bar gauge snapshot
added some comments about state of components things
heatmap: fix for negative values
move sort to table processing
onCellClick
rotate!
...
* grafana/master: (32 commits)
Fixed more typescript no implicit any issues
Also push to ci metrics to new shared HM instance
Fixed type issues introduced by adding angular types
Typescript noAny fixes, start of a long journey
Updated code stats collection
Updated path to new script
POC on collecting metrics in ci process
changelog: add notes about heatmap issues #15683#14019
added two new variables in default theme for panel padding, replaced panelhorizontalpadding and variables.panelverticalpadding with new variables
renamed default variables: s -> sm, m -> md, l -> lg
removed gf-form-margin variable and replaced with space- variables where it was used
heatmap: able to hide buckets with zero value #12080
s -> sm, m -> md, l -> lg
heatmap: fix prometheus buckets sorting, closes#15637
s -> sm, m -> md, l -> lg
removed headings-margin-bottom variable
remove kbn test
Added scopedVars argument in datasourceSrv.get in DataPanel
heatmap: able to reverse Y buckets order, #15683
Refactoring of multi-value datasource PR #15812
...
* grafana/master:
Fixed type issues introduced by adding angular types
Typescript noAny fixes, start of a long journey
Updated code stats collection
Updated path to new script
POC on collecting metrics in ci process
renamed default variables: s -> sm, m -> md, l -> lg
removed gf-form-margin variable and replaced with space- variables where it was used
heatmap: able to hide buckets with zero value #12080
s -> sm, m -> md, l -> lg
heatmap: fix prometheus buckets sorting, closes#15637
s -> sm, m -> md, l -> lg
removed headings-margin-bottom variable
remove kbn test
Added scopedVars argument in datasourceSrv.get in DataPanel
Refactoring of multi-value datasource PR #15812
fixed minor misstake with dashboard padding
removed -margin, replaced with new general variables
added new space variables to margins in AddPanelWidget, add_data_source, dashboard_settings and sidemenu
added new variables for spacing, set margins in _cards with new variables
Make datasource variables multiselect and dashboard repeatable
* grafana/master:
fix(explore/logs) not collapsing whitespace (#15737)
Refactoring / fixing password hint PR #15868
chore: Move sidemenu out of context service and use the logic we have in the router already for hiding the sidemenu
Fix deduplication results displaying wrong data (#15755)
Revert "Fix Datasource Update to no User/Password"
fix imageurl in notification test
changed all rems to pixels in defaults and template, changed back root font size
Make password hint configurable from settings/defaults.ini
changed root font to 100%(default 16px), changed font-size from px to rem, updated rem sizes in template and default.ts files, removed display classes and variables since not used, removed lead class and variables since not usedremoved serif font since not used and probably never should be used
fix: Update test snapshot
fix: Logo goes Home instead of toggling side menu #15482Fix: #14706 Incorrect index pattern padding in alerting queries
Removed commented code
Fixed alias in Cloudwatch Expressions
- Set container width to 100% so column widths can be calculated properly
- Sets duplicates, level, timestamp, local time to a fixed width based upon em units since the size of these are static
- Sets labels to be 20%
- Remove min-width:80% on message column so that it now consumes remaining space
- Additionally fixes long labels from overflowing into the messages column by properly setting a max-width per label and hiding overflow
closes#15673
Signed-off-by: Steven Sheehy <ssheehy@firescope.com>
The log rows were mutated in the store, what resulted in wrong deduplication results as well as made the selector memoization quirky - for "the same results" the selector was running twice.
This commit:
*fixes histogram computation when zero x-axis min/max are set
(they used to be ignored).
*validates the user defined x-axis min/max values
and ignores them if they result in invalid bucket sizes.
* grafana/master: (24 commits)
docs: Fix indentation level for OAuth2 config
docs: update CONTRIBUTING.md
@grafana/ui - release docs v1 (#15835)
Minor refactoring of copy tags when saving feature, #15446
Simple implementation for preserve tags, closes#11627
Updated prettierignore
Refactoring of PR #14772
fix typo in pr template
add nil/length check when delete old login attempts
Minor refactoring of new react text panel
fix allow anonymous server bind for ldap search
use pure component
use replaceVariables
Catch bad regex exception at controller level
11780: invalid reg value can cause unexpected behaviour
update
Add string quote func
Remove option used to control within browser
Add pic into actionCard message
Add new option to set where to open the message url
...
* grafana/master: (23 commits)
@grafana/ui - release docs v1 (#15835)
Minor refactoring of copy tags when saving feature, #15446
Simple implementation for preserve tags, closes#11627
Updated prettierignore
Refactoring of PR #14772
fix typo in pr template
add nil/length check when delete old login attempts
Minor refactoring of new react text panel
fix allow anonymous server bind for ldap search
Update README.md
use pure component
use replaceVariables
Catch bad regex exception at controller level
11780: invalid reg value can cause unexpected behaviour
update
Add string quote func
Remove option used to control within browser
Add pic into actionCard message
Add new option to set where to open the message url
Optimize the Dingding match values format
...
* Readme update
* Update @grafana/ui Readme qith release process description. Allow version commit creation during release
* Run tests and checks for grafana/core before releasing grafana/ui
* Post review Readme updates
* grafana/master:
Update README.md
Update core:start cli command to watch theme changes again (#15856)
Updated pull request template
Updated pull request rtemplate
Removed title case from issue template title
Updated issue template titles
Updated issue templates
Updated templates
fix: Update error message and replace npm with yarn #15851
fix: Make sure we dont add &autofitpanels to the url if it already exists #15849
Update upgrading.md for wrong spell
return the same panelData unless it changes
Map dataSourceTypeSearchQuery state from redux to search input.
Revert "Fix for leaving playlist mode"
add new issue templates
* grafana/master:
Minor refactoring of PR #15770
Alternative fix to detecting when to stop a playlist, fixes#15701 and #15702
fix discord notifier so it doesn't crash when there are no image generated
Add a keybinding that toggles all legends in a dashboard
removed color in color variables names
changed some more color variables to use variables
* grafana/master: (40 commits)
Minor refactoring of PR #15770
Alternative fix to detecting when to stop a playlist, fixes#15701 and #15702
fix discord notifier so it doesn't crash when there are no image generated
fix: Consistency in unit labels #15709
Update latest.json
Update CHANGELOG.md
position from add panel, dimensions from copied panel
changelog: add notes about closing #14509#15179
fix: Add class for input fields with help icon to avoid icon hiding the text #15771
Update CHANGELOG.md
restore to current folder when restoring old dashboard version
fix(renderer): Vendor ansicolor as typescript
log phantomjs output even if it timeout and include orgId when render alert
keep size from copied panel and not from add panel widget
Added basic cherry pick helping task
Prevent search in VizPicker from stealing focus (#15802)
fix only users that can edit a dashboard should be able to update panel json
Updated changelog task
Fixed image rendering issue for dashboards with auto refresh, casued by missing reloadOnSearch flag on route, fixes#15631
Updated to add PR author, skip PR issue references
...
* grafana/master: (24 commits)
fix: Consistency in unit labels #15709
Update latest.json
Update CHANGELOG.md
position from add panel, dimensions from copied panel
changelog: add notes about closing #14509#15179
fix: Add class for input fields with help icon to avoid icon hiding the text #15771
Update CHANGELOG.md
restore to current folder when restoring old dashboard version
fix(renderer): Vendor ansicolor as typescript
log phantomjs output even if it timeout and include orgId when render alert
keep size from copied panel and not from add panel widget
Added basic cherry pick helping task
Prevent search in VizPicker from stealing focus (#15802)
fix only users that can edit a dashboard should be able to update panel json
Updated changelog task
Fixed image rendering issue for dashboards with auto refresh, casued by missing reloadOnSearch flag on route, fixes#15631
Updated to add PR author, skip PR issue references
Added first iteration/poc of changelog task
Enable @grafana/ui version bump based on package.json contents
Ensure clean master only when publishing package to npm
...
Fixes#15635
Importing ansicolor from node_modules or vendored as is failed because
there is no ES5 transpiler configured for ES6 libs.
- remove ansicolor from package.json
- add ansicolor to public/vendor/ansicolor and port to typescript
- adapt all ansicolor imports
- add `public/vendor` as a path to be considered by ts compiler
* grafana/master: (57 commits)
changelog: adds note for #8253
use default min interval of 1m for sql datasources
changelog: adds note about closing #15608
Fixed scrollbar not visible due to content being added a bit after mount, fixes#15711
Added comment to Docker file
moving
style: add gicon-shield to sidemenu class Closes#15591
remove `UseBool` since we use `AllCols`
fix: Move chunk splitting from prod to common so we get the same files in dev as prod
fix: update datasource in componentDidUpdate Closes#15751
changelog: add notes about closing #15739
Moved Server Admin and children to separate menu item on Side Menu (#15592)
update version to 6.1.0-pre
Viewers with viewers_can_edit should be able to access /explore (#15787)
Fixed scrolling issue that caused scroll to be locked to the bottom of a long dashboard, fixes#15712
reordered import
Wrapperd playlist controls in clickoutsidewrapper
Turn off verbose output from tar extraction when building docker files, fixes#15528
Hide time info switch when no time options are specified
Made sure that DataSourceOption displays value and fires onChange/onBlur events (#15757)
...
* fix: Viewers with viewers_can_edit should be able to access /explore #15773
* refactoring initial PR a bit to simplify function and reduce duplication
* Fixed#15682
* fix: Add hideTimeOverride to state since we need to control the Switch
* fix: Back the maxDataPoints change, we need to keep it as a string
Co-authored-by:johannes.schill@polyester.se
* Fixed url of back button in datasource edit page, when root_url configured
* Update snapshots
* Use app config directly in ButtonRow instead of passing datasources page URL via prop
* Snapshots update
* do not mutate seriesList in mergeSeriesByTime
* extendedseriesList -> extendedDatapointsList
* remove toString() from datapoints, since the value can be null
When weekly index pattern is used, indices names contain single digit week number for week 1-9
This fix makes sure indice names always contain 2 digit week number for weekly pattern
* grafana/master:
Explore: Enable click on name label
Bumping grafana ui version (#15669)
Need this to be available for plugins
docs: 6.0 whats new
Updated latest.json with 6.0
Update CHANGELOG.md
docs: grafana 6.0 has been released.
moves social package to /login
moves tracing packge into /infra
Update CHANGELOG.md
changelog: adds notes for #14509 and #15179
graph: fixes click after scroll in series override menu
moves metric package to /infra
stackdriver: change reducer mapping for distribution metrics
stackdriver: fix for float64 bounds for distribution metrics
Fixed value dropdown not updating when it's current value updates, fixes#15566
- click on the name label in a prometheus table was disabled
- it was disabled because every query used to have a metric which is no
longer true
- this change enables it
Makes changes to dropdown-typeahead2 so that a css
class for the button can be passed in. Means it can
be used instead of dropdown-typeahead.
Switches to using dropdown-typeahead2 for series_overrides
directive and for the influxdb, mysql and postgres datasources
as it already contains a fix for this issue.
This commit also fixes the index property which
was set using an incorrectly spelled length property in the
series_overrides directive.
Closes#15621
- lines for graphs from different query rows end up in different
transactions
- within each transaction the color distribution resets leading to color
overlap
- this change takes existing transaction colors into account
- Distribution metrics are now mapped to more reducers
when the metric kind is cumulative.
- The witdth of the metrics dropdown is now much wider.
- Changed the text from Select Aggregation to Select Reducer
to line up with the UI in Stackdriver.
Changed how react panels store their options
* Added a ReactPanelPlugin as the interface that react panels export, this way react panels have clearer api, and gives us hooks to handle migrations and a way for panel to handle panel changes in the future
* Moved gauge value options into a sub oject and made editor more generic, will be moved out of gauge pane later and shared between singlestat, gauge, bargauge, honecomb
* Also remove nested options prop that was there due to bug
* Added missing Gauge props
* Fixed gauge issue that will require migration later and also value options editor did not handle null decimals or 0 decimals
* Fixed unit tests
* More fixes for react panels
Please use this template to create your bug report. By providing as much info as possible you help us understand the issue, reproduce it and resolve it for you quicker. Therefor take a couple of extra minutes to make sure you have provided all info needed.
PROTIP: record your screen and attach it as a gif to showcase the issue.
- Questions should be posted to: https://community.grafana.com
- Use query inspector to troubleshoot issues: https://bit.ly/2XNF6YS
- How to record and attach gif: https://bit.ly/2Mi8T6K
-->
**What happened**:
**What you expected to happen**:
**How to reproduce it (as minimally and precisely as possible)**:
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).
* Rebase your PR if it gets out of sync with master
<!--
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
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 master 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**:
**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**:
**REMOVE THE TEXT ABOVE BEFORE CREATING THE PULL REQUEST**
"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!"
},
{
"type":"comment",
"name":"duplicate",
"allowUsers":[],
"action":"updateLabels",
"addLabel":"type/duplicate"
},
{
"type":"label",
"name":"type/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!"
},
{
"type":"label",
"name":"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!"
@@ -8,19 +8,19 @@ In the interest of fostering an open and welcoming environment, we as contributo
Examples of behavior that contributes to creating a positive environment include:
* Using welcoming and inclusive language
* Being respectful of differing viewpoints and experiences
* Gracefully accepting constructive criticism
* Focusing on what is best for the community
* Showing empathy towards other community members
- Using welcoming and inclusive language
- Being respectful of differing viewpoints and experiences
- Gracefully accepting constructive criticism
- Focusing on what is best for the community
- Showing empathy towards other community members
Examples of unacceptable behavior by participants include:
* The use of sexualized language or imagery and unwelcome sexual attention or advances
* Trolling, insulting/derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or electronic address, without explicit permission
* Other conduct which could reasonably be considered inappropriate in a professional setting
- The use of sexualized language or imagery and unwelcome sexual attention or advances
- Trolling, insulting/derogatory comments, and personal or political attacks
- Public or private harassment
- Publishing others' private information, such as a physical or electronic address, without explicit permission
- Other conduct which could reasonably be considered inappropriate in a professional setting
## Our Responsibilities
@@ -34,7 +34,7 @@ This Code of Conduct applies both within project spaces and in public spaces whe
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at contact@grafana.com. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at conduct@grafana.com. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.
Thank you for your interest in contributing to Grafana! We welcome all people who want to contribute in a healthy and constructive manner within our community. To help us create a safe and positive community experience for all, we require all participants to adhere to the [Code of Conduct](CODE_OF_CONDUCT.md).
Grafana uses GitHub to manage contributions.
Contributions take the form of pull requests that will be reviewed by the core team.
This document is a guide to help you through the process of contributing to Grafana.
* If you are a new contributor see: [Steps to Contribute](#steps-to-contribute)
## Become a contributor
* If you have a trivial fix or improvement, go ahead and create a pull request.
You can contribute to Grafana in several ways. Here are some examples:
*If you plan to do something more involved, discuss your idea on the respective [issue](https://github.com/grafana/grafana/issues) or create a [new issue](https://github.com/grafana/grafana/issues/new) if it does not exist. This will avoid unnecessary work and surely give you and us a good deal of inspiration.
-Contribute to the Grafana codebase.
- Report and triage bugs.
- Develop community plugins and dashboards.
- Write technical documentation and blog posts, for users and contributors.
- Organize meetups and user groups in your local area.
- Help others by answering questions about Grafana.
For more ways to contribute, check out the [Open Source Guides](https://opensource.guide/how-to-contribute/).
## Steps to Contribute
### Report bugs
Should you wish to work on a GitHub issue, check first if it is not already assigned to someone. If it is free, you claim it by commenting on the issue that you want to work on it. This is to prevent duplicated efforts from contributors on the same issue.
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.
Please check the [`beginner friendly`](https://github.com/grafana/grafana/issues?q=is%3Aopen+is%3Aissue+label%3A%22beginner+friendly%22) label to find issues that are good for getting started. If you have questions about one of the issues, with or without the tag, please comment on them and one of the core team or the original poster will clarify it.
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.
#### Security issues
If you believe you've found a security vulnerability, please read our [security policy](https://github.com/grafana/grafana/security/policy) for more details.
## Setup
### Suggest enhancements
Follow the setup guide in README.md
If you have an idea of how to improve Grafana, submit an [enhancement request](https://github.com/grafana/grafana/issues/new?labels=type%3A+feature+request&template=2-feature_request.md).
### Rebuild frontend assets on source change
```
yarn watch
```
We want to make Grafana accessible to even more people. Submit an [accessibility issue](https://github.com/grafana/grafana/issues/new?labels=type%3A+accessibility&template=3-accessibility.md) to help us understand what we can improve.
### Rerun tests on source change
```
yarn jest
```
### Triage issues
### Run tests for backend assets before commit
```
test -z "$(gofmt -s -l . | grep -v -E 'vendor/(github.com|golang.org|gopkg.in)' | tee /dev/stderr)"
```
If you don't have the knowledge or time to code, consider helping with _issue triage_. The community will thank you for saving them time by spending some of yours.
### Run tests for frontend assets before commit
```
yarn test
go test -v ./pkg/...
```
Read more about the ways you can [Triage issues](/contribute/triage-issues.md).
### Answering questions
## Pull Request Checklist
If you have a question and you can't find the answer in the [documentation](https://grafana.com/docs/), the next step is to ask it on the [community site](https://community.grafana.com/).
* Branch from the master branch and, if needed, rebase to the current master branch before submitting your pull request. If it doesn't merge cleanly with master you may be asked to rebase your changes.
It's important to us to help these users, and we'd love your help. Sign up to our [community site](https://community.grafana.com/), and start helping other Grafana users by answering their questions.
* Commits should be as small as possible, while ensuring that each commit is correct independently (i.e., each commit should compile and pass tests).
### Your first contribution
* If your patch is not getting reviewed or you need a specific person to review it, you can @-reply a reviewer asking for a review in the pull request or a comment.
Unsure where to begin contributing to Grafana? Start by browsing issues labeled `beginner friendly` or `help wanted`.
*Add tests relevant to the fixed bug or new feature.
-[Beginner-friendly](https://github.com/grafana/grafana/issues?q=is%3Aopen+is%3Aissue+label%3A%22beginner+friendly%22) issues are generally straightforward to complete.
- [Help wanted](https://github.com/grafana/grafana/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22) issues are problems we would like the community to help us with regardless of complexity.
If you're looking to make a code change, see how to set up your environment for [local development](contribute/developer-guide.md).
When you're ready to contribute, it's time to [Create a pull request](/contribute/create-pull-request.md).
#### Contributor License Agreement (CLA)
Before we can accept your pull request, you need to [sign our CLA](https://grafana.com/docs/grafana/latest/developers/cla/). If you haven't, our CLA assistant prompts you to when you create your pull request.
## Where do I go from here?
- 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.
This document describes the rules and governance of the project. It is meant to be followed by all the developers of the project and the Grafana community. Common terminology used in this governance document are listed below:
- **Team members**: Any members of the private [grafana-team][team] Google group.
- **Maintainers**: Maintainers lead an individual project or parts thereof ([`MAINTAINERS.md`][maintainers]).
- **Projects**: A single repository in the Grafana GitHub organization and listed below is referred to as a project:
- clock-panel
- devtools
- gel-app
- grafana
- grafana-github-datasource
- grafana-image-renderer
- grafana-kiosk
- grafana-plugin-sdk-go
- grafana-polystat-panel
- grafonnet-lib
- kairosdb-datasource
- piechart-panel
- simple-angular-panel
- simple-app-plugin
- simple-datasource
- simple-datasource-backend
- simple-json-backend-datasource
- simple-json-datasource
- simple-react-panel
- strava-datasource
- tutorials
- worldmap-panel
- **The Grafana project**: The sum of all activities performed under this governance, concerning one or more repositories or the community.
## Values
The Grafana developers and community are expected to follow the values defined in the Grafana Code of Conduct. Furthermore, the Grafana community strives for kindness, giving feedback effectively, and building a welcoming environment. The Grafana developers generally decide by consensus and only resort to conflict resolution by a majority vote if consensus cannot be reached.
## Projects
Each project must have a [`MAINTAINERS.md`][maintainers] file with at least one maintainer. Where a project has a release process, access and documentation should be such that more than one person can perform a release. Releases should be announced on the Grafana Labs blog. Any new projects should be first proposed on the [team mailing list][team] following the voting procedures listed below.
## Decision making
### Team members
Team member status may be given to those who have made ongoing contributions to the Grafana project for at least 3 months. This is usually in the form of code improvements and/or notable work on documentation, but organizing events or user support could also be taken into account.
New members may be proposed by any existing member by email to [grafana-team][team]. It is highly desirable to reach consensus about acceptance of a new member. However, the proposal is ultimately voted on by a formal [supermajority vote](#supermajority-vote).
If the new member proposal is accepted, the proposed team member should be contacted privately via email to confirm or deny their acceptance of team membership. This email will also be CC'd to [grafana-team][team] for record-keeping purposes.
If they choose to accept, the [onboarding](#onboarding) procedure is followed.
Team members may retire at any time by emailing [the team][team].
Team members can be removed by [supermajority vote](#supermajority-vote) on [the team mailing list][team].
For this vote, the member in question is not eligible to vote and does not count towards the quorum.
Any removal vote can cover only one single person.
Upon death of a member, they leave the team automatically.
In case a member leaves, the [offboarding](#offboarding) procedure is applied.
The current team members are:
- Alexander Zobnin ([Grafana Labs](https://grafana.com/))
- Alex Khomenko ([Grafana Labs](https://grafana.com/))
- Andrej Ocenas ([Grafana Labs](https://grafana.com/))
Maintainers lead one or more project(s) or parts thereof and serve as a point of conflict resolution amongst the contributors to this project. Ideally, maintainers are also team members, but exceptions are possible for suitable maintainers that, for whatever reason, are not yet team members.
Changes in maintainership have to be announced on the [developers mailing list][devs]. They are decided by [rough consensus](#consensus) and formalized by changing the [`MAINTAINERS.md`][maintainers] file of the respective repository.
Maintainers are granted commit rights to all projects covered by this governance.
A maintainer or committer may resign by notifying the [team mailing list][team]. A maintainer with no project activity for a year is considered to have resigned. Maintainers that wish to resign are encouraged to propose another team member to take over the project.
A project may have multiple maintainers, as long as the responsibilities are clearly agreed upon between them. This includes coordinating who handles which issues and pull requests.
### Technical decisions
Technical decisions that only affect a single project are made informally by the maintainer of this project, and [rough consensus](#consensus) is assumed. Technical decisions that span multiple parts of the Grafana project should be discussed and made on the [Grafana developer mailing list][devs].
Decisions are usually made by [rough consensus](#consensus). If no consensus can be reached, the matter may be resolved by [majority vote](#majority-vote).
### Governance changes
Changes to this document are made by Grafana Labs.
### Other matters
Any matter that needs a decision may be called to a vote by any member if they deem it necessary. For private or personnel matters, discussion and voting takes place on the [team mailing list][team], otherwise on the [developer mailing list][devs].
## Voting
The Grafana project usually runs by informal consensus, however sometimes a formal decision must be made.
Depending on the subject matter, as laid out [above](#decision-making), different methods of voting are used.
For all votes, voting must be open for at least one week. The end date should be clearly stated in the call to vote. A vote may be called and closed early if enough votes have come in one way so that further votes cannot change the final decision.
In all cases, all and only [team members](#team-members) are eligible to vote, with the sole exception of the forced removal of a team member, in which said member is not eligible to vote.
Discussion and votes on personnel matters (including but not limited to team membership and maintainership) are held in private on the [team mailing list][team]. All other discussion and votes are held in public on the [developer mailing list][devs].
For public discussions, anyone interested is encouraged to participate. Formal power to object or vote is limited to [team members](#team-members).
### Consensus
The default decision making mechanism for the Grafana project is [rough][rough] consensus. This means that any decision on technical issues is considered supported by the [team][team] as long as nobody objects or the objection has been considered but not necessarily accommodated.
Silence on any consensus decision is implicit agreement and equivalent to explicit agreement. Explicit agreement may be stated at will. Decisions may, but do not need to be called out and put up for decision on the [developers mailing list][devs] at any time and by anyone.
Consensus decisions can never override or go against the spirit of an earlier explicit vote.
If any [team member](#team-members) raises objections, the team members work together towards a solution that all involved can accept. This solution is again subject to rough consensus.
In case no consensus can be found, but a decision one way or the other must be made, any [team member](#team-members) may call a formal [majority vote](#majority-vote).
### Majority vote
Majority votes must be called explicitly in a separate thread on the appropriate mailing list. The subject must be prefixed with `[VOTE]`. In the body, the call to vote must state the proposal being voted on. It should reference any discussion leading up to this point.
Votes may take the form of a single proposal, with the option to vote yes or no, or the form of multiple alternatives.
A vote on a single proposal is considered successful if more vote in favor than against.
If there are multiple alternatives, members may vote for one or more alternatives, or vote “no” to object to all alternatives. It is not possible to cast an “abstain” vote. A vote on multiple alternatives is considered decided in favor of one alternative if it has received the most votes in favor, and a vote from more than half of those voting. Should no alternative reach this quorum, another vote on a reduced number of options may be called separately.
### Supermajority vote
Supermajority votes must be called explicitly in a separate thread on the appropriate mailing list. The subject must be prefixed with `[VOTE]`. In the body, the call to vote must state the proposal being voted on. It should reference any discussion leading up to this point.
Votes may take the form of a single proposal, with the option to vote yes or no, or the form of multiple alternatives.
A vote on a single proposal is considered successful if at least two thirds of those eligible to vote vote in favor.
If there are multiple alternatives, members may vote for one or more alternatives, or vote “no” to object to all alternatives. A vote on multiple alternatives is considered decided in favor of one alternative if it has received the most votes in favor, and a vote from at least two thirds of those eligible to vote. Should no alternative reach this quorum, another vote on a reduced number of options may be called separately.
## On- / Offboarding
### Onboarding
The new member is
- added to the list of [team members](#team-members). Ideally by sending a PR of their own, at least approving said PR.
- announced on the [developers mailing list][devs] by an existing team member. Ideally, the new member replies in this thread, acknowledging team membership.
- added to the projects with commit rights.
- added to the [team mailing list][team].
### Offboarding
The ex-member is
- removed from the list of [team members](#team-members). Ideally by sending a PR of their own, at least approving said PR. In case of forced removal, no approval is needed.
- removed from the projects. Optionally, they can retain maintainership of one or more repositories if the [team](#team-members) agrees.
- removed from the team mailing list and demoted to a normal member of the other mailing lists.
- not allowed to call themselves an active team member any more, nor allowed to imply this to be the case.
- added to a list of previous members if they so choose.
If needed, we reserve the right to publicly announce removal.
The main goal of issue triage is to categorize all incoming Grafana issues and make sure each issue has all basic information needed for anyone else to understand and be able to start working on it.
> **Note:** This information is for Grafana project Maintainers, Owners, and Admins. If you are a Contributor, then you will not be able to perform most of the tasks in this topic.
The core maintainers of the Grafana project are responsible for categorizing all incoming issues and delegating any critical or important issue to other maintainers. Currently one maintainer each week is responsible. Besides that part, triage provides an important way to contribute to an open source project.
Triage helps ensure issues resolve quickly by:
- Ensuring the issue's intent and purpose is conveyed precisely. This is necessary because it can be difficult for an issue to explain how an end user experiences a problem and what actions they took.
- Giving a contributor the information they need before they commit to resolving an issue.
- Lowering the issue count by preventing duplicate issues.
- Streamlining the development process by preventing duplicate discussions.
If you don't have the knowledge or time to code, consider helping with triage. The community will thank you for saving them time by spending some of yours.
## Simplified flowchart diagram of the issue triage process
To get started with issue triage and finding issues that haven't been triaged you have two alternatives.
### Browse unlabeled issues
The easiest and straight forward way of getting started and finding issues that haven't been triaged is to browse [unlabeled issues](https://github.com/grafana/grafana/issues?q=is%3Aopen+is%3Aissue+no%3Alabel) and starting from the bottom and working yourself to the top.
### Subscribe to all notifications
The more advanced, but recommended way is to subscribe to all notifications from this repository which means that all new issues, pull requests, comments and important status changes are sent to your configured email address. Read this [guide](https://help.github.com/en/articles/watching-and-unwatching-repositories#watching-a-single-repository) for help with setting this up.
It's highly recommended that you setup filters to automatically remove emails from the inbox and label/categorize them accordingly to make it easy for you to understand when you need to act upon a notification or where to look for finding issues that haven't been triaged etc.
Instructions for setting up filters in Gmail can be found [here](#setting-up-gmail-filters). Another alternative is to use [Trailer](https://github.com/ptsochantaris/trailer) or similar software.
## 2. Ensure the issue contains basic information
Before triaging an issue very far, make sure that the issue's author provided the standard issue information. This will help you make an educated recommendation on how to categorize the issue. The Grafana project utilizes [GitHub issue templates](https://help.github.com/en/articles/creating-issue-templates-for-your-repository) to guide contributors to provide standard information that must be included for each type of template or type of issue.
### Standard issue information that must be included
Given a certain [issue template]([template](https://github.com/grafana/grafana/issues/new/choose)) have been used by the issue author or depending how the issue is perceived by the issue triage responsible, the following should help you understand what standard issue information that must be included.
#### Bug reports
Should explain what happened, what was expected and how to reproduce it together with any additional information that may help giving a complete picture of what happened such as screenshots, [query inspector](https://community.grafana.com/t/using-grafanas-query-inspector-to-troubleshoot-issues/2630) output and any environment related information that's applicable and/or maybe related to the reported problem:
- Grafana version
- Data source type & version
- Platform & OS Grafana is installed on
- User OS & Browser + versions
- Using docker + what environment
- Which plugins
- Configuration database in use (sqlite, mysql, postgres)
- Reverse proxy in front of Grafana, what version and configuration
- Non-default configuration settings
- Development environment like Go and Node versions, if applicable
#### Enhancement requests
Should explain what enhancement or feature that the author wants to be added and why that is needed.
#### Accessibility issues
This is a mix between a bug report and enhancement request but focused on accessibility issues to help make Grafana improve keyboard navigation, screen-reader support and being accessible to everyone. The report should include relevant WCAG criteria, if applicable.
#### Support requests
In general, if the issue description and title is perceived as a question no more information is needed.
### Good practices
To make it easier for everyone to understand and find issues they're searching for it's suggested as a general rule of thumbs to:
- Make sure that issue titles are named to explain the subject of the issue, has a correct spelling and doesn't include irrelevant information and/or sensitive information.
- Make sure that issue descriptions doesn't include irrelevant information, information from template that haven't been filled out and/or sensitive information.
- Do your best effort to change title and description or request suggested changes by adding a comment.
> **Note:** Above rules is applicable to both new and existing issues of the Grafana project.
### Do you have all the information needed to categorize an issue?
Depending on the issue, you might not feel all this information is needed. Use your best judgement. If you cannot triage an issue using what its author provided, explain kindly to the author that they must provide the above information to clarify the problem. Label issue with `needs more detail` and add any related `area/*` or `datasource/*` labels.
If the author provides the standard information but you are still unable to triage the issue, request additional information. Do this kindly and politely because you are asking for more of the author's time.
If the author does not respond to the requested information within the timespan of a week, close the issue with a kind note stating that the author can request for the issue to be reopened when the necessary information is provided.
When you feel you have all the information needed you're ready to [categorizing the issue](#3-categorizing-an-issue).
If you receive a notification with additional information provided but you are not anymore on issue triage and you feel you do not have time to handle it, you should delegate it to the current person on issue triage.
## 3. Categorizing an issue
An issue can have multiple of the following labels. Typically, a properly categorized issue should at least have:
- One label identifying its type (`type/*`).
- One or multiple labels identifying the functional areas of interest or component (`area/*`) and/or data source (`datasource/*`), if applicable.
| `type/bug` | A feature isn't working as expected given design or documentation. |
| `type/feature-request` | Request for a new feature or enhancement. |
| `type/docs` | Documentation problem or enhancement. |
| `type/accessibility` | Accessibility problem or enhancement. |
| `type/question` | Issue is a question or is perceived as such. |
| `type/duplicate` | An existing issue of the same subject/request have already been reported. |
| `type/works-as-intended` | A reported bug works as intended/by design. |
| `type/build-packaging` | Build or packaging problem or enhancement. |
| `area/*` | Subject is related to a functional area of interest or component. |
| `datasource/*` | Subject is related to a core data source plugin. |
### Duplicate issues
Make sure it's not a duplicate by searching existing issues using related terms from the issue title and description. If you think you know there is an existing issue, but can't find it, please reach out to one of the maintainers and ask for help. If you identify that the issue is a duplicate of an existing issue:
1. Add a comment `/duplicate of #<issue number>`. GitHub will recognize this and add some additional context to the issue activity.
2. The Grafana bot will do the rest, adding the correct label and closing comment
3. Optionally add any related `area/*` or `datasource/*` labels.
### Bug reports
If it's not perfectly clear that it's an actual bug, quickly try to reproduce it.
**It's a bug/it can be reproduced:**
1. Add a comment describing detailed steps for how to reproduce it, if applicable.
2. Label the issue `type/bug` and at least one `area/*` or `datasource/*` label.
3. If you know that maintainers wont be able to put any resources into it for some time then label the issue with `help wanted` and optionally `beginner friendly` together with pointers on which code to update to fix the bug. This should signal to the community that we would appreciate any help we can get to resolve this.
4. Move on to [prioritizing the issue](#4-prioritization-of-issues).
**It can't be reproduced:**
1. Either [ask for more information](#2-ensure-the-issue-contains-basic-information) needed to investigate it more thoroughly.
2. Either [delegate further investigations](#investigation-of-issues) to someone else.
**It works as intended/by design:**
1. Kindly and politely add a comment explaining briefly why we think it works as intended and close the issue.
2. Label the issue `type/works-as-intended`.
### Enhancement/feature?
1. Label the issue `type/feature-request` and at least one `area/*` or `datasource/*` label.
2. Move on to [prioritizing the issue](#4-prioritization-of-issues).
### Documentation issue?
First, evaluate if the documentation makes sense to be included in the Grafana project:
- Is this something we want/can maintain as a project?
- Is this referring to usage of some specific integration/tool and in that case is that a popular use case in combination with Grafana?
- If unsure, kindly and politely add a comment explaining that we would need [upvotes](https://help.github.com/en/articles/about-conversations-on-github#reacting-to-ideas-in-comments) to identify that lots of other users want/need this.
Second, label the issue `type/docs` and at least one `area/*` or `datasource/*` label.
**Minor typo/error/lack of information:**
There's a minor typo/error/lack of information that adds a lot of confusion for users and given the amount of work is a big win to make sure fixing it:
1. Either update the documentation yourself and open a pull request.
2. Either delegate the work to someone else by assigning that person to the issue and add the issue to next major/minor milestone.
**Major error/lack of information:**
1. Label the issue with `help wanted` and `beginner friendly`, if applicable, to signal that we find this important to fix and we would appreciate any help we can get from the community.
2. Move on to [prioritizing the issue](#4-prioritization-of-issues).
### Accessibility issues
1. Label the issue `type/accessibility` and at least one `area/*` or `datasource/*` label.
### Support requests
1. Kindly and politely direct the issue author to the [community site](https://community.grafana.com/) and explain that GitHub is mainly used for tracking bugs and feature requests. If possible, it's usually a good idea to add some pointers to the issue author's question.
2. Close the issue and label it with `type/question`.
## 4. Prioritization of issues
In general bugs and enhancement issues should be labeled with a priority.
This is the most difficult thing with triaging issues since it requires a lot of knowledge, context and experience before being able to think of and start feel comfortable adding a certain priority label.
The key here is asking for help and discuss issues to understand how more experienced project members think and reason. By doing that you learn more and eventually be more and more comfortable with prioritizing issues.
In case there is an uncertainty around the prioritization of an issue, please ask the maintainers for help.
| `priority/critical` | Highest priority. Must be actively worked on as someone's top priority right now. |
| `priority/support-subscription` | This is important for one or several customers having a paid Grafana support subscription. |
| `priority/important-soon` | Must be staffed and worked on either currently, or very soon, ideally in time for the next release. |
| `priority/important-longterm` | Important over the long term, but may not be staffed and/or may need multiple releases to complete. |
| `priority/nice-to-have` | It's a good idea, but not scheduled for any release. |
| `priority/awaiting-more-evidence` | Lowest priority. Possibly useful, but not yet enough interest in it. |
| `priority/unscheduled` | Something to look into before and to be discussed during the planning of the next (upcoming) major/minor stable release. |
**Critical bugs**
1. If a bug has been categorized and any of the following criteria apply, the bug should be labeled as critical and must be actively worked on as someone's top priority right now.
- Results in any data loss
- Critical security or performance issues
- Problem that makes a feature unusable
- Multiple users experience a severe problem affecting their business, users etc.
2. Label the issue `priority/critical`.
3. If applicable, label the issue `priority/support-subscription`.
4. Add the issue to the next upcoming patch release milestone. Create a new milestone if there are none.
5. Escalate the problem to the maintainers.
6. Assign or ask a maintainer for help assigning someone to make this issue their top priority right now.
**Important short-term**
1. Label the issue `priority/important-soon`.
2. If applicable, label the issue `priority/support-subscription`.
3. Add the issue to the next upcoming patch or major/minor stable release milestone. Ask maintainers for help if unsure if it's a patch or not. Create a new milestone if there are none.
4. Make sure to add the issue to a suitable backlog of a GitHub project and prioritize it or assign someone to work on it now or very soon.
5. Consider requesting [help from the community](#5-requesting-help-from-the-community), even though it may be problematic given a short amount of time until it should be released.
**Important long-term**
1. Label the issue `priority/important-longterm`.
2. Consider requesting [help from the community](#5-requesting-help-from-the-community).
**Nice to have**
1. Label the issue `priority/nice-to-have`.
2. Consider requesting [help from the community](#5-requesting-help-from-the-community).
**Not critical, but unsure?**
1. Label the issue `priority/unscheduled`.
2. Consider requesting [help from the community](#5-requesting-help-from-the-community).
## 5. Requesting help from the community
Depending on the issue and/or priority, it's always a good idea to consider signalling to the community that help from community is appreciated and needed in case an issue is not prioritized to be worked on by maintainers. Use your best judgement. In general, requesting help from the community means that a contribution has a good chance of getting accepted and merged.
In many cases the issue author or community as a whole is more suitable to contribute changes since they're experts in their domain. It's also quite common that someone has tried to get something to work using the documentation without success and made an effort to get it to work and/or reached out to the [community site](https://community.grafana.com/) to get the missing information. Particularly in these areas it's more likely that there exist experts in their own domain and it is usually a good idea to request help from contributors:
- Database setups
- Authentication like OAuth providers and LDAP setups
- Platform specific things
- Reverse proxy setups
- Alert notifiers
1. Kindly and politely add a comment to signal to users subscribed to updates of the issue.
- Explain that the issue would be nice to get resolved, but it isn't prioritized to work on by maintainers for an unforeseen future.
- If possible or applicable, try to help contributors getting starting by adding pointers and references to what code/files need to be changed and/or ideas of a good way to solve/implement the issue.
2. Label the issue with `help wanted`.
3. If applicable, label the issue with `beginner friendly` to denote that the issue is suitable for a beginner to work on.
4. If possible, try to estimate the amount of work by adding `effort/small`, `effort/medium` or `effort/large`.
## Investigation of issues
When an issue has all basic information provided, but the triage responsible haven't been able to reproduce the reported problem at a first glance, the issue is labeled [Needs investigation](https://github.com/grafana/grafana/labels/needs%20investigation). Depending on the perceived severity and/or number of [upvotes](https://help.github.com/en/articles/about-conversations-on-github#reacting-to-ideas-in-comments), the investigation will either be delegated to another maintainer for further investigation or put on hold until someone else (maintainer or contributor) picks it up and eventually starts investigating it.
Investigating issues can be a very time consuming task, especially for the maintainers, given the huge number of combinations of plugins, data sources, platforms, databases, browsers, tools, hardware, integrations, versions and cloud services, etc that are being used with Grafana. There is a certain number of combinations that are more common than others, and these are in general easier for maintainers to investigate.
For some other combinations it may not be possible at all for a maintainer to setup a proper test environment to investigate the issue. In these cases we really appreciate any help we can get from the community. Otherwise the issue is highly likely to be closed.
Even if you don't have the time or knowledge to investigate an issue we highly recommend that you [upvote](https://help.github.com/en/articles/about-conversations-on-github#reacting-to-ideas-in-comments) the issue if you happen to have the same problem. If you have further details that may help investigating the issue please provide as much information as possible.
## 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)
* 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.
## External PRs
Part of issue triage should also be triaging of external PRs. Main goal should be to make sure PRs from external contributors have an owner/reviewer and are not forgotten.
1. Check new external PRs which do not have a reviewer.
1. Check if there is a link to an existing issue.
1. If not and you know which issue it is solving, add the link yourself, otherwise ask the author to link the issue or create one.
1. Assign a reviewer based on who was handling the linked issue or what code or feature does the PR touches (look at who was the last to make changes there if all else fails).
## Appendix
### Setting up Gmail filters
If you're using Gmail it's highly recommended that you setup filters to automatically remove email from the inbox and label them accordingly to make it easy for you to understand when you need to act upon a notification or process all incoming issues that haven't been triaged.
This may be setup by personal preference, but here's a working configuration for reference.
1. Follow instructions in [gist](https://gist.github.com/marefr/9167c2e31466f6316c1cba118874e74f)
2. In Gmail, go to Settings -> Filters and Blocked Addresses
3. Import filters -> select xml file -> Open file
4. Review filters
5. Optional, Check Apply new filters to existing email
6. Create filters
This will give you a structure of labels in the sidebar similar to the following:
```
- Inbox
...
- GitHub (mine)
- activity
- assigned
- mentions
- GitHub (other)
- Grafana
```
- All notifications you’ll need to read/take action on show up as unread in GitHub (mine) and its sub-labels.
- All other notifications you don’t need to take action on show up as unread in GitHub (other) and its sub-labels
- This is convenient for issue triage and to follow the activity in the Grafana project.
This version of Grafana has big changes that will impact a limited set of plugins. We moved from systemjs to webpack
for built-in plugins & everything internal. External plugins still use systemjs but now with a limited
for built-in plugins and everything internal. External plugins still use systemjs but now with a limited
set of Grafana components they can import. Plugins can depend on libs like lodash & moment and internal components
like before using the same import paths. However since everything in Grafana is no longer accessible, a few plugins could encounter issues when importing a Grafana dependency.
@@ -25,5 +24,10 @@ If you think we missed exposing a crucial lib or Grafana component let us know b
### Deprecated components
The angular directive `<spectrum-picker>` is now deprecated (will still work for a version more) but we recommend plugin authors
to upgrade to new `<color-picker color="ctrl.color" onChange="ctrl.onSparklineColorChange"></color-picker>`
upgrade to new `<color-picker color="ctrl.color" onChange="ctrl.onSparklineColorChange"></color-picker>`
## Changes in Grafana v6.0
### DashboardSrv.ts
If you utilize [DashboardSrv](https://github.com/grafana/grafana/commit/8574dca081002f36e482b572517d8f05fd44453f#diff-1ab99561f9f6a10e1fafcddc39bc1d65) in your plugin code, `dash` was renamed to `dashboard`.
Join us Feb 25-26 in Los Angeles, California for GrafanaCon - a two-day event with talks focused on Grafana and the surrounding open source monitoring ecosystem. Get deep dives into Loki, the Explore workflow and all of the new features of Grafana 6, plus participate in hands on workshops to help you get the most out of your data.
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:
Time is running out - grab your ticket now! http://grafanacon.org
- **Visualize:** Fast and flexible client side graphs with a multitude of options. Panel plugins for many different way 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.
- **Alerting:** Visually define alert rules for your most important metrics. Grafana will continuously evaluate and send notifications to systems like Slack, PagerDuty, VictorOps, OpsGenie.
- **Mixed Data Sources:** Mix different data sources in the same graph! You can specify a data source on a per-query basis. This works for even custom datasources.
Rebuild on file change, and serve them by Grafana's webserver (http://localhost:3000):
```bash
yarn watch
```
Build the assets, rebuild on file change with Hot Module Replacement (HMR), and serve them by webpack-dev-server (http://localhost:3333):
```bash
yarn start
# OR set a theme
env GRAFANA_THEME=light yarn start
```
*Note: HMR for Angular is not supported. If you edit files in the Angular part of the app, the whole page will reload.*
Run tests and rebuild on source change:
```bash
yarn jest
```
**Open grafana in your browser (default: e.g. `http://localhost:3000`) and login with admin user (default: `user/pass = admin/admin`).**
### Building a Docker image
There are two different ways to build a Grafana docker image. If your machine is setup for Grafana development and you run linux/amd64 you can build just the image. Otherwise, there is the option to build Grafana completely within Docker.
Run the image you have built using: `docker run --rm -p 3000:3000 grafana/grafana:dev`
#### Building on linux/amd64 (fast)
1. Build the frontend `go run build.go build-frontend`
2. Build the docker image `make build-docker-dev`
The resulting image will be tagged as `grafana/grafana:dev`
#### Building anywhere (slower)
Choose this option to build on platforms other than linux/amd64 and/or not have to setup the Grafana development environment.
1.`make build-docker-full` or `docker build -t grafana/grafana:dev .`
The resulting image will be tagged as `grafana/grafana:dev`
Notice: If you are using Docker for MacOS, be sure to set the memory limit to be larger than 2 GiB (at docker -> Preferences -> Advanced), otherwise `grunt build` may fail.
### Dev config
Create a custom.ini in the conf directory to override default configuration options.
You only need to add the options you want to override. Config files are applied in the order of:
1. grafana.ini
1. custom.ini
In your custom.ini uncomment (remove the leading `;`) sign. And set `app_mode = development`.
### Running tests
#### Frontend
Execute all frontend tests
```bash
yarn test
```
Writing & watching frontend tests
- Start watcher: `yarn jest`
- Jest will run all test files that end with the name ".test.ts"
#### Backend
```bash
# Run Golang tests using sqlite3 as database (default)
go test ./pkg/...
# Run Golang tests using mysql as database - convenient to use /docker/blocks/mysql_tests
GRAFANA_TEST_DB=mysql go test ./pkg/...
# Run Golang tests using postgres as database - convenient to use /docker/blocks/postgres_tests
GRAFANA_TEST_DB=postgres go test ./pkg/...
```
## Contribute
If you have any ideas for improvement or have found a bug, do not hesitate to open an issue.
And if you have time, clone this repo and submit a pull request to help me make Grafana
the kickass metrics & devops dashboard we all dream about!
Read the [contributing](https://github.com/grafana/grafana/blob/master/CONTRIBUTING.md) guide then check the [`beginner friendly`](https://github.com/grafana/grafana/issues?q=is%3Aopen+is%3Aissue+label%3A%22beginner+friendly%22) label to find issues that are easy and that we would like help with.
## Plugin development
Checkout the [Plugin Development Guide](http://docs.grafana.org/plugins/developing/development/) and checkout the [PLUGIN_DEV.md](https://github.com/grafana/grafana/blob/master/PLUGIN_DEV.md) file for changes in Grafana that relate to
plugin development.
- Follow [@grafana on Twitter](https://twitter.com/grafana/)
- Read and subscribe to the [Grafana blog](https://grafana.com/blog/)
- If you have a specific question, check out our [discussion forums](https://community.grafana.com/).
- For general discussions, join us on the [official Slack](http://slack.raintank.io/) team.
## License
Grafana is distributed under [Apache 2.0 License](https://github.com/grafana/grafana/blob/master/LICENSE.md).
Grafana is distributed under the [Apache 2.0 License](https://github.com/grafana/grafana/blob/master/LICENSE).
This roadmap is a tentative plan for the core development team. Things change constantly as PRs come in and priorities change.
But it will give you an idea of our current vision and plan.
The roadmap is a tentative plan for the core development team. Things change constantly as pull requests come in and priorities change, but it will give you an idea of our current vision and plan.
### Short term (1-2 months)
- PRs & Bugs
- React Panel Support
- React Query Editor Support
- Metrics & Log Explore UI
- Grafana UI library shared between grafana & plugins
- Seperate visualization from panels
- More reuse between Explore & dashboard
- Explore logging support for more data sources
### Mid term (2-4 months)
- Drilldown links
- Dashboards as code workflows
- React migration
- New panels
### Long term (4 - 8 months)
- Alerting improvements (silence, per series tracking, etc)
### In a distant future far far away
- Meta queries
- Integrated light weight TSDB
- Web socket & live data sources
### Outside contributions
We know this is being worked on right now by contributors (and we hope to merge it when it's ready).
To view the Roadmap, go to the Issues tab on GitHub. There you will find three roadmap issues pinned at the top.
If you think you have found a security vulnerability, please send a report to [security@grafana.com](mailto:security@grafana.com). This address can be used for all of Grafana Labs's open source and commercial products (including but not limited to Grafana, Grafana Cloud, Grafana Enterprise, and grafana.com). We can accept only vulnerability reports at this address.
Please encrypt your message to us; please use our PGP key. The key fingerprint is:
F988 7BEA 027A 049F AE8E 5CAA D125 8932 BE24 C5CA
The key is available from [keyserver.ubuntu.com](https://keyserver.ubuntu.com/pks/lookup?search=0xF9887BEA027A049FAE8E5CAAD1258932BE24C5CA&fingerprint=on&op=index).
Grafana Labs will send you a response indicating the next steps in handling your report. After the initial reply to your report, the security team will keep you informed of the progress towards a fix and full announcement, and may ask for additional information or guidance.
**Important:** We ask you to not disclose the vulnerability before it have been fixed and announced, unless you received a response from the Grafana Labs security team that you can do so.
## Security announcements
We maintain a category on the community site called [Security Announcements](https://community.grafana.com/c/security-announcements),
where we will post a summary, remediation, and mitigation details for any patch containing security fixes.
You can also subscribe to email updates to this category if you have a grafana.com account and sign on to the community site or track updates via an [RSS feed](https://community.grafana.com/c/security-announcements.rss).
First, check the official [Grafana documentation](https://grafana.com/docs/).
If you require further help or support then ask a question in the [Grafana community site](https://community.grafana.com/) or [Grafana Slack](http://slack.raintank.io/). You can also search the community site for previously answered questions, in case someone already had your problem and got help.
**Please note:**
- The Grafana project uses GitHub mainly for tracking bugs and feature requests.
- Do not open an issue just to ask a question. The issue will be closed immediately.
- Only submit issues for bug reports, feature requests, or enhancements.
Upgrading Go or Node.js requires making changes in many different files. See below for a list and explanation for each.
@@ -16,14 +16,33 @@ Upgrading Go or Node.js requires making changes in many different files. See bel
- Appveyor
- Dockerfile
## Go Dependencies
## Go dependencies
Updated using `dep`.
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.
-`Gopkg.toml`
-`Gopkg.lock`
> **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.
## Node.js Dependencies
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
# Pick a specific version.
GO111MODULE=on 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
```
You have to commit the changes to `go.mod` and `go.sum` before submitting the pull request.
## Node.js dependencies
Updated using `yarn`.
@@ -49,7 +68,7 @@ Our builds run on CircleCI through our build script.
The main build step (in CircleCI) is built using a custom build container that comes pre-baked with some of the necessary dependencies.
This document is based on [GOVERNANCE.md](GOVERNANCE.md). We assume good faith and intend to keep all processes as lightweight as possible but as specific as required. In case of disagreements about anything in this document, GOVERNANCE.md applies.
The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “MAY”, and “OPTIONAL” in this document are to be interpreted as described in [RFC2119](http://tools.ietf.org/html/rfc2119).
Git and [GitHub terminology](https://help.github.com/en/github/getting-started-with-github/github-glossary) are used throughout this document.
Team members and their access to repositories is maintained through [GitHub teams](https://help.github.com/en/github/setting-up-and-managing-organizations-and-teams/about-teams). Team maintainers add and remove team members as outlined in GOVERNANCE.md.
# Code changes
## 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:
- Directly in a RR (Pull Request) - this MAY be done, but SHOULD not be the common case.
- Issue
- Developer mailing list
- Design document, shared via Google Docs, accessible to at least all team members.
Significant changes MUST be discussed and agreed upon with the relevant subsystem maintainers.
## 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.
- Every merge MUST be approved by at least one team member.
- Non-trivial changes MUST be approved by at least
- two team members, or
- one subsystem maintainer.
- Significant changes MUST be approved by at least
- two team members, AND
- the relevant subsystem maintainer.
PRs MUST be [reviewed](https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/reviewing-changes-in-pull-requests) and [approved](https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/approving-a-pull-request-with-required-reviews) via GitHub’s review system.
- Reviewers MAY write comments if approving
- Reviewers MUST write comments if rejecting a PR or if requesting changes.
Once a PR is approved as per above, any team member MAY merge the PR.
# Release workflow
## Branch structure
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.
- 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.
## Releases
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.
- 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.
Releases follow the following cadence
- MAJOR: Yearly
- MINOR: Every 4-6 weeks
- PATCH: As needed
Releases SHOULD NOT be delayed by pending changes.
Releases MUST be coordinated with the relevant subsystem maintainers.
# redis: config like redis server e.g. `addr=127.0.0.1:6379,pool_size=100,db=0,ssl=false`. Only addr is required. ssl may be 'true', 'false', or 'insecure'.
# memcache: 127.0.0.1:11211
provider_config=sessions
# Session cookie name
cookie_name=grafana_sess
# If you use session in https only, default is false
cookie_secure=false
# Session life time, default is 86400
session_life_time=86400
gc_interval_time=86400
# Connection Max Lifetime default is 14400 (means 14400 seconds or 4 hours)
conn_max_lifetime=14400
connstr=
#################################### Data proxy ###########################
[dataproxy]
@@ -143,9 +126,31 @@ conn_max_lifetime = 14400
# This enables data proxy logging, default is false
logging=false
# How long the data proxy should wait before timing out default is 30 (seconds)
# How long the data proxy waits 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 many seconds the data proxy waits before sending a keepalive request.
keep_alive_seconds=30
# How many seconds the data proxy waits for a successful TLS Handshake before timing out.
tls_handshake_timeout_seconds=10
# How many seconds the data proxy will wait for a server's first response headers after
# fully writing the request headers if the request has an "Expect: 100-continue"
# header. A value of 0 will result in the body being sent immediately, without
# waiting for the server to approve.
expect_continue_timeout_seconds=1
# The maximum number of idle connections that Grafana will keep alive.
max_idle_connections=100
# How many seconds the data proxy keeps an idle connection open before timing out.
idle_conn_timeout_seconds=90
# If enabled and user is not anonymous, data proxy will add X-Grafana-User header with username into the request.
# Number dashboard versions to keep (per dashboard). Default: 20, Minimum: 1
versions_to_keep=20
# Minimum dashboard refresh interval. When set, this will restrict users to set the refresh interval of a dashboard lower than given interval. Per default this is 5 seconds.
# The interval string is a possibly signed sequence of decimal numbers, followed by a unit suffix (ms, s, m, h, d), e.g. 30s or 1m.
min_refresh_interval=5s
# Path to the default home dashboard. If this value is empty, then Grafana uses StaticRootPath + "dashboards/home.json"
# Background text for the user field on the login page
login_hint=email or username
password_hint=password
# Default UI theme ("dark" or "light")
default_theme=dark
@@ -243,15 +290,21 @@ external_manage_info =
# Viewers can edit/inspect dashboard settings in the browser. But not save the dashboard.
viewers_can_edit=false
# Editors can administrate dashboard, folders and teams they create
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
[auth]
# Login cookie name
login_cookie_name=grafana_session
# The lifetime (days) an authenticated user can be inactive before being required to login at next visit. Default is 7 days.
login_maximum_inactive_lifetime_days=7
# The maximum lifetime (duration) an authenticated user can be inactive before being required to login at next visit. Default is 7 days (7d). This setting should be expressed as a duration, e.g. 5m (minutes), 6h (hours), 10d (days), 2w (weeks), 1M (month). The lifetime resets at each successful token rotation (token_rotation_interval_minutes).
login_maximum_inactive_lifetime_duration=
# The maximum lifetime (days) an authenticated user can be logged in since login time before being required to login. Default is 30 days.
login_maximum_lifetime_days=30
# The maximum lifetime (duration) an authenticated user can be logged in since login time before being required to login. Default is 30 days (30d). This setting should be expressed as a duration, e.g. 5m (minutes), 6h (hours), 10d (days), 2w (weeks), 1M (month).
login_maximum_lifetime_duration=
# How often should auth tokens be rotated for authenticated users when being active. The default is each 10 minutes.
token_rotation_interval_minutes=10
@@ -269,6 +322,15 @@ signout_redirect_url =
# This setting is ignored if multiple OAuth providers are configured.
oauth_auto_login=false
# OAuth state max age cookie duration in seconds. Defaults to 600 seconds.
oauth_state_cookie_max_age=600
# limit of api_key seconds to live before expiration
api_key_max_seconds_to_live=-1
# Set to true to enable SigV4 authentication option for HTTP-based datasources
# Used for uploading images to public servers so they can be included in slack/email messages.
# You can choose between (s3, webdav, gcs, azure_blob, local)
provider=
[external_image_storage.s3]
endpoint=
path_style_access=
bucket_url=
bucket=
region=
@@ -570,6 +731,8 @@ public_url =
key_file=
bucket=
path=
enable_signed_urls=false
signed_url_expiration=
[external_image_storage.azure_blob]
account_name=
@@ -580,13 +743,109 @@ container_name =
# does not require any configuration
[rendering]
# Options to configure external image rendering server like https://github.com/grafana/grafana-image-renderer
# Options to configure a remote HTTP image rendering service, e.g. using https://github.com/grafana/grafana-image-renderer.
# URL to a remote HTTP image renderer service, e.g. http://localhost:8081/render, will enable Grafana to render panels and dashboards to PNG-images using HTTP requests to an external service.
server_url=
# If the remote HTTP image renderer service runs on a different server than the Grafana server you may have to configure this to a URL where Grafana is reachable, e.g. http://grafana.domain/.
callback_url=
# Concurrent render request limit affects when the /render HTTP endpoint is used. Rendering many images at the same time can overload the server,
# which this setting can help protect against by only allowing a certain amount of concurrent requests.
concurrent_render_request_limit=30
[panels]
# here for to support old env variables, can remove after a few months
enable_alpha=false
disable_sanitize_html=false
[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.
# Instruct headless browser instance to use a default timezone when not provided by Grafana, e.g. when rendering panel image of alert.
# See ICU’s metaZones.txt (https://cs.chromium.org/chromium/src/third_party/icu/source/data/misc/metaZones.txt) for a list of supported
# timezone IDs. Fallbacks to TZ environment variable if not set.
rendering_timezone=
# Instruct headless browser instance to use a default language when not provided by Grafana, e.g. when rendering panel image of alert.
# Please refer to the HTTP header Accept-Language to understand how to format this value, e.g. 'fr-CH, fr;q=0.9, en;q=0.8, de;q=0.7, *;q=0.5'.
rendering_language=
# Instruct headless browser instance to use a default device scale factor when not provided by Grafana, e.g. when rendering panel image of alert.
# Default is 1. Using a higher value will produce more detailed images (higher DPI), but will require more disk space to store an image.
rendering_viewport_device_scale_factor=
# Instruct headless browser instance whether to ignore HTTPS errors during navigation. Per default HTTPS errors are not ignored. Due to
# the security risk it's not recommended to ignore HTTPS errors.
rendering_ignore_https_errors=
# Instruct headless browser instance whether to capture and log verbose information when rendering an image. Default is false and will
# only capture and log error messages. When enabled, debug messages are captured and logged as well.
# For the verbose information to be included in the Grafana server log you have to adjust the rendering log level to debug, configure
# [log].filter = rendering:debug.
rendering_verbose_logging=
# Instruct headless browser instance whether to output its debug and error messages into running process of remote rendering service.
# Default is false. This can be useful to enable (true) when troubleshooting.
rendering_dumpio=
# Additional arguments to pass to the headless browser instance. Default is --no-sandbox. The list of Chromium flags can be found
# here (https://peter.sh/experiments/chromium-command-line-switches/). Multiple arguments is separated with comma-character.
rendering_args=
# You can configure the plugin to use a different browser binary instead of the pre-packaged version of Chromium.
# Please note that this is not recommended, since you may encounter problems if the installed version of Chrome/Chromium is not
# compatible with the plugin.
rendering_chrome_bin=
# Instruct how headless browser instances are created. Default is 'default' and will create a new browser instance on each request.
# Mode 'clustered' will make sure that only a maximum of browsers/incognito pages can execute concurrently.
# Mode 'reusable' will have one browser instance and will create a new incognito page on each request.
rendering_mode=
# When rendering_mode = clustered you can instruct how many browsers or incognito pages can execute concurrently. Default is 'browser'
# and will cluster using browser instances.
# Mode 'context' will cluster using incognito pages.
rendering_clustering_mode=
# When rendering_mode = clustered you can define maximum number of browser instances/incognito pages that can execute concurrently..
rendering_clustering_max_concurrency=
# Limit the maximum viewport width, height and device scale factor that can be requested.
rendering_viewport_max_width=
rendering_viewport_max_height=
rendering_viewport_max_device_scale_factor=
# Change the listening host and port of the gRPC server. Default host is 127.0.0.1 and default port is 0 and will automatically assign
# a port not in use.
grpc_host=
grpc_port=
[enterprise]
license_path=
[feature_toggles]
# enable features, separated by spaces
enable=
[date_formats]
# For information on what formatting patterns that are supported https://momentjs.com/docs/#/displaying/
# Default system date format used in time range picker and other places where full time is displayed
full_date=YYYY-MM-DD HH:mm:ss
# Used by graph and other places where we only show small intervals
interval_second=HH:mm:ss
interval_minute=HH:mm
interval_hour=MM/DD HH:mm
interval_day=MM/DD
interval_month=YYYY-MM
interval_year=YYYY
# Experimental feature
use_browser_locale=false
# 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.
# If you use session in https only, default is false
;cookie_secure = false
# Session life time, default is 86400
;session_life_time = 86400
# cache connectionstring options
# database: will use Grafana primary database.
# redis: config like redis server e.g. `addr=127.0.0.1:6379,pool_size=100,db=0,ssl=false`. Only addr is required. ssl may be 'true', 'false', or 'insecure'.
# memcache: 127.0.0.1:11211
;connstr =
#################################### Data proxy ###########################
[dataproxy]
@@ -130,9 +127,31 @@ log_queries =
# This enables data proxy logging, default is false
;logging = false
# How long the data proxy should wait before timing out default is 30 (seconds)
# How long the data proxy waits 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 many seconds the data proxy waits before sending a keepalive probe request.
;keep_alive_seconds = 30
# How many seconds the data proxy waits for a successful TLS Handshake before timing out.
;tls_handshake_timeout_seconds = 10
# How many seconds the data proxy will wait for a server's first response headers after
# fully writing the request headers if the request has an "Expect: 100-continue"
# header. A value of 0 will result in the body being sent immediately, without
# waiting for the server to approve.
;expect_continue_timeout_seconds = 1
# The maximum number of idle connections that Grafana will keep alive.
;max_idle_connections = 100
# How many seconds the data proxy keeps an idle connection open before timing out.
;idle_conn_timeout_seconds = 90
# If enabled and user is not anonymous, data proxy will add X-Grafana-User header with username into the request, default is false.
;external_snapshot_name = Publish to snapshot.raintank.io
# Set to true to enable this Grafana instance act as an external snapshot server and allow unauthenticated requests for
# creating and deleting snapshots.
;public_mode = false
# remove expired snapshot
;snapshot_remove_expired = true
@@ -195,6 +247,13 @@ log_queries =
# Number dashboard versions to keep (per dashboard). Default: 20, Minimum: 1
;versions_to_keep = 20
# Minimum dashboard refresh interval. When set, this will restrict users to set the refresh interval of a dashboard lower than given interval. Per default this is 5 seconds.
# The interval string is a possibly signed sequence of decimal numbers, followed by a unit suffix (ms, s, m, h, d), e.g. 30s or 1m.
;min_refresh_interval = 5s
# Path to the default home dashboard. If this value is empty, then Grafana uses StaticRootPath + "dashboards/home.json"
# Set to true to automatically assign new users to the default organization (id 1)
;auto_assign_org = true
# Set this value to automatically add new users to the provided organization (if auto_assign_org above is set to true)
;auto_assign_org_id = 1
# Default role new users will be automatically assigned (if disabled above is set to true)
;auto_assign_org_role = Viewer
# Require email validation before sign up completes
;verify_email_enabled = false
# Background text for the user field on the login page
;login_hint = email or username
;password_hint = password
# Default UI theme ("dark" or "light")
;default_theme = dark
@@ -223,15 +289,21 @@ log_queries =
# Viewers can edit/inspect dashboard settings in the browser. But not save the dashboard.
;viewers_can_edit = false
# Editors can administrate dashboard, folders and teams they create
;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
[auth]
# Login cookie name
;login_cookie_name = grafana_session
# The lifetime (days) an authenticated user can be inactive before being required to login at next visit. Default is 7 days,
;login_maximum_inactive_lifetime_days = 7
# The maximum lifetime (duration) an authenticated user can be inactive before being required to login at next visit. Default is 7 days (7d). This setting should be expressed as a duration, e.g. 5m (minutes), 6h (hours), 10d (days), 2w (weeks), 1M (month). The lifetime resets at each successful token rotation.
;login_maximum_inactive_lifetime_duration =
# The maximum lifetime (days) an authenticated user can be logged in since login time before being required to login. Default is 30 days.
;login_maximum_lifetime_days = 30
# The maximum lifetime (duration) an authenticated user can be logged in since login time before being required to login. Default is 30 days (30d). This setting should be expressed as a duration, e.g. 5m (minutes), 6h (hours), 10d (days), 2w (weeks), 1M (month).
;login_maximum_lifetime_duration =
# How often should auth tokens be rotated for authenticated users when being active. The default is each 10 minutes.
;token_rotation_interval_minutes = 10
@@ -249,6 +321,15 @@ log_queries =
# This setting is ignored if multiple OAuth providers are configured.
;oauth_auto_login = false
# OAuth state max age cookie duration in seconds. Defaults to 600 seconds.
;oauth_state_cookie_max_age = 600
# limit of api_key seconds to live before expiration
;api_key_max_seconds_to_live = -1
# Set to true to enable SigV4 authentication option for HTTP-based datasources.
# Options to configure external image rendering server like https://github.com/grafana/grafana-image-renderer
# Options to configure a remote HTTP image rendering service, e.g. using https://github.com/grafana/grafana-image-renderer.
# URL to a remote HTTP image renderer service, e.g. http://localhost:8081/render, will enable Grafana to render panels and dashboards to PNG-images using HTTP requests to an external service.
;server_url =
# If the remote HTTP image renderer service runs on a different server than the Grafana server you may have to configure this to a URL where Grafana is reachable, e.g. http://grafana.domain/.
;callback_url =
# Concurrent render request limit affects when the /render HTTP endpoint is used. Rendering many images at the same time can overload the server,
# which this setting can help protect against by only allowing a certain amount of concurrent requests.
;concurrent_render_request_limit = 30
[panels]
# If set to true Grafana will allow script tags in text panels. Not recommended as it enable XSS vulnerabilities.
;disable_sanitize_html = false
[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.
# Instruct headless browser instance to use a default timezone when not provided by Grafana, e.g. when rendering panel image of alert.
# See ICU’s metaZones.txt (https://cs.chromium.org/chromium/src/third_party/icu/source/data/misc/metaZones.txt) for a list of supported
# timezone IDs. Fallbacks to TZ environment variable if not set.
;rendering_timezone =
# Instruct headless browser instance to use a default language when not provided by Grafana, e.g. when rendering panel image of alert.
# Please refer to the HTTP header Accept-Language to understand how to format this value, e.g. 'fr-CH, fr;q=0.9, en;q=0.8, de;q=0.7, *;q=0.5'.
;rendering_language =
# Instruct headless browser instance to use a default device scale factor when not provided by Grafana, e.g. when rendering panel image of alert.
# Default is 1. Using a higher value will produce more detailed images (higher DPI), but will require more disk space to store an image.
;rendering_viewport_device_scale_factor =
# Instruct headless browser instance whether to ignore HTTPS errors during navigation. Per default HTTPS errors are not ignored. Due to
# the security risk it's not recommended to ignore HTTPS errors.
;rendering_ignore_https_errors =
# Instruct headless browser instance whether to capture and log verbose information when rendering an image. Default is false and will
# only capture and log error messages. When enabled, debug messages are captured and logged as well.
# For the verbose information to be included in the Grafana server log you have to adjust the rendering log level to debug, configure
# [log].filter = rendering:debug.
;rendering_verbose_logging =
# Instruct headless browser instance whether to output its debug and error messages into running process of remote rendering service.
# Default is false. This can be useful to enable (true) when troubleshooting.
;rendering_dumpio =
# Additional arguments to pass to the headless browser instance. Default is --no-sandbox. The list of Chromium flags can be found
# here (https://peter.sh/experiments/chromium-command-line-switches/). Multiple arguments is separated with comma-character.
;rendering_args =
# You can configure the plugin to use a different browser binary instead of the pre-packaged version of Chromium.
# Please note that this is not recommended, since you may encounter problems if the installed version of Chrome/Chromium is not
# compatible with the plugin.
;rendering_chrome_bin =
# Instruct how headless browser instances are created. Default is 'default' and will create a new browser instance on each request.
# Mode 'clustered' will make sure that only a maximum of browsers/incognito pages can execute concurrently.
# Mode 'reusable' will have one browser instance and will create a new incognito page on each request.
;rendering_mode =
# When rendering_mode = clustered you can instruct how many browsers or incognito pages can execute concurrently. Default is 'browser'
# and will cluster using browser instances.
# Mode 'context' will cluster using incognito pages.
;rendering_clustering_mode =
# When rendering_mode = clustered you can define maximum number of browser instances/incognito pages that can execute concurrently..
;rendering_clustering_max_concurrency =
# Limit the maximum viewport width, height and device scale factor that can be requested.
;rendering_viewport_max_width =
;rendering_viewport_max_height =
;rendering_viewport_max_device_scale_factor =
# Change the listening host and port of the gRPC server. Default host is 127.0.0.1 and default port is 0 and will automatically assign
# a port not in use.
;grpc_host =
;grpc_port =
[enterprise]
# Path to a valid Grafana Enterprise license.jwt file
;license_path =
[panels]
;enable_alpha = false
# If set to true Grafana will allow script tags in text panels. Not recommended as it enable XSS vulnerabilities.
;disable_sanitize_html = false
[feature_toggles]
# enable features, separated by spaces
;enable =
[date_formats]
# For information on what formatting patterns that are supported https://momentjs.com/docs/#/displaying/
# Default system date format used in time range picker and other places where full time is displayed
;full_date = YYYY-MM-DD HH:mm:ss
# Used by graph and other places where we only show small intervals
;interval_second = HH:mm:ss
;interval_minute = HH:mm
;interval_hour = MM/DD HH:mm
;interval_day = MM/DD
;interval_month = YYYY-MM
;interval_year = YYYY
# Experimental feature
;use_browser_locale = false
# 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.
Are you looking to take on contributions with bigger impact? These guides help you get a better understanding of the structure and design of the Grafana codebase.
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:
Grafana uses a database to persist settings between restarts. In fact, if you don't specify one, Grafana creates a [SQLite3](https://www.sqlite.org/) database file on your local disk. This guide explains how to store and retrieve data from the database.
Grafana supports the [following databases](https://grafana.com/docs/installation/requirements/#database):
- [MySQL](https://www.mysql.com/)
- [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/).
[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.
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:
- [Services](services.md) are command handlers that _contain business logic_.
-`sqlstore` handlers are command handlers that _access the database_.
### Register a `sqlstore` handler
> **Deprecated:** Refer to the [deprecation note for `sqlstore` handlers](#sqlstore-handlers).
To register a handler:
- Create a new file `myrepo.go` in the `sqlstore` package.
- Create a [command handler](communication.md#handle-commands).
_,err:=sess.Exec("DELETE FROM dashboards WHERE dashboard_id=?",cmd.DashboardID)
returnerr
})
}
```
Here, `inTransaction` is a helper function in the `sqlstore` package that provides a session, that lets you execute SQL statements.
## `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.
To use the `SqlStore`, inject the `SQLStore` in your service struct:
```go
typeMyServicestruct{
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):
_,err:=sess.Exec("DELETE FROM dashboards WHERE dashboard_id=?",cmd.DashboardID)
returnerr
})
}
```
For transactions, use the `WithTransactionalDbSession` method instead.
## Migrations
As Grafana evolves, it becomes necessary to create _schema migrations_ for one or more database tables.
To see all the types of migrations you can add, refer to [migrations.go](/pkg/services/sqlstore/migrator/migrations.go).
Before you add a migration, make sure that you:
- Never change a migration that has been committed and pushed to master.
- Always add new migrations, to change or undo previous migrations.
Add a migration using one of the following methods:
- Add migrations in the `migrations` package.
- Implement the `DatabaseMigrator` for the service.
**Important:** If there are previous migrations for a service, use that method. By adding migrations using both methods, you risk running migrations in the wrong order.
### Add migrations in `migrations` package
Most services have their migrations located in the [migrations](/pkg/services/sqlstore/migrations/migrations.go) package.
To add a migration:
- Open the [migrations.go](/pkg/services/sqlstore/migrations/migrations.go) file.
- In the `AddMigrations` function, find the `addXxxMigration` function for the service you want to create a migration for.
- At the end of the `addXxxMigration` function, register your migration:
During initialization, SQL store queries the service registry, and runs migrations for every service that implements the [DatabaseMigrator](https://github.com/grafana/grafana/blob/44c2007498c76c2dbb48e8366b4af410f1ee1b98/pkg/registry/registry.go#L101-L106) interface.
To add a migration:
- If needed, add the `AddMigration(mg *migrator.Migrator)` method to the service.
- At the end of the `AddMigration` method, register your migration:
A Grafana _service_ encapsulates and exposes application logic to the rest of the application, through a set of related operations.
Before a service can start communicating with the rest of Grafana, it needs to be registered in the _service registry_.
The service registry keeps track of all available services during runtime. On start-up, Grafana uses the registry to build a dependency graph of services, a _service graph_.
Even though the services in Grafana do different things, they share a number of patterns. To better understand how a service works, let's build one from scratch!
## Create a service
To start building a service:
- Create a new Go package `mysvc` in the [pkg/services](/pkg/services) directory.
- Create a `service.go` file inside your new directory.
All services need to implement the [Service](https://godoc.org/github.com/grafana/grafana/pkg/registry#Service) interface:
```go
typeMyServicestruct{
}
func(s*MyService)Init()error{
returnnil
}
```
The `Init` method is used to initialize and configure the service to make it ready to use. Services that return an error halt Grafana's startup process and cause the error to be logged as it exits.
## Register a service
Every service needs to be registered with the application for it to be included in the service graph.
To register a service, call the `registry.RegisterService` function in an `init` function within your package.
```go
funcinit(){
registry.RegisterService(&MyService{})
}
```
`init` functions are only run whenever a package is imported, so we also need to import the package in the application. In the `server.go` file under `pkg/server`, import the package we just created:
We're excited that you're considering making a contribution to the Grafana project! This document guides you through the process of creating a [pull request](https://help.github.com/en/articles/about-pull-requests/).
## Before you begin
We know you're excited to create your first pull request. Before we get started, read these resources first:
- Learn how to start [Contributing to Grafana](/CONTRIBUTING.md).
- Make sure your code follows the relevant [style guides](/contribute/style-guides).
## Your first pull request
If this is your first time contributing to an open-source project on GitHub, make sure you read about [Creating a pull request](https://help.github.com/en/articles/creating-a-pull-request).
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).
- 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 the pull request fixes a bug:
- The pull request description must include `Closes #<issue number>` or `Fixes #<issue number>`.
- To avoid regressions, the pull request should include tests that replicate the fixed bug.
### Frontend-specific guidelines
Pull requests for frontend contributions must:
- Use [Emotion](/contribute/style-guides/styling.md) for styling.
- Not increase the Angular code base.
- Not use `any` or `{}` without reason.
- Not contain large React components that could easily be split into several smaller components.
- Not contain backend calls directly from components—use actions and Redux instead.
Pull requests for Redux contributions must:
- Use the `actionCreatorFactory` and `reducerFactory` helpers instead of traditional switch statement reducers in Redux. Refer to [Redux framework](/contribute/style-guides/redux.md) for more details.
- Use `reducerTester` to test reducers. Refer to [Redux framework](/contribute/style-guides/redux.md) for more details.
- 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.
## 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.
If you think a specific person needs to review your pull request, then you can tag them in the description or in a comment. Tag a user by typing the `@` symbol followed by their GitHub username.
We recommend that you read [How to do a code review](https://google.github.io/eng-practices/review/reviewer/) to learn more about code reviews.
## Formatting guidelines
A well-written pull request minimizes the time to get your change accepted. These guidelines help you write good commit messages and descriptions for your pull requests.
### Commit message format
Grafana uses the guidelines for commit messages outlined in [How to Write a Git Commit Message](https://chris.beams.io/posts/git-commit/), with the following additions:
- Subject line must begin with the _area_ of the commit.
- A footer in the form of an optional [keyword and issue reference](https://help.github.com/en/articles/closing-issues-using-keywords).
#### Area
The area should use upper camel case, e.g. UpperCamelCase.
Prefer using one of the following areas:
- **Build:** Changes to the build system, or external dependencies.
- **Chore:** Changes that don't affect functionality.
- **Dashboard:** Changes to the Dashboard feature.
- **Docs:** Changes to documentation.
- **Explore:** Changes to the Explore feature.
- **Plugins:** Changes to any of the plugins.
For changes to data sources, the area should be the name of the data source, e.g., AzureMonitor, Graphite, and Prometheus.
For changes to panels, the area should be the name of the panel, suffixed with Panel, e.g., GraphPanel, SinglestatPanel, and TablePanel.
**Examples**
-`Build: Support publishing MSI to grafana.com`
-`Explore: Add Live option for supported data sources`
-`GraphPanel: Fix legend sorting issues`
-`Docs: Changed url to URL in all documentation files`
### Pull request titles
The Grafana team _squashes_ all commits into one when we accept a pull request. The title of the pull request becomes the subject line of the squashed commit message. We still encourage contributors to write informative commit messages, as they becomes a part of the Git commit body.
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.
This guide helps you get started developing Grafana.
Before you begin, you might want to read [How to contribute to Grafana as a junior dev](https://medium.com/@ivanahuckova/how-to-contribute-to-grafana-as-junior-dev-c01fe3064502) by [Ivana Huckova](https://medium.com/@ivanahuckova).
## Dependencies
Make sure you have the following dependencies installed before setting up your developer environment:
- [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)
### macOS
We recommend using [Homebrew](https://brew.sh/) for installing any missing dependencies:
```
brew install git
brew install go
brew install node@12
npm install -g yarn
```
## Download Grafana
We recommend using the Git command-line interface to download the source code for the Grafana project:
1. Open a terminal and run `git clone https://github.com/grafana/grafana.git`. This command downloads Grafana to a new `grafana` directory in your current directory.
1. Open the `grafana` directory in your favorite code editor.
For alternative ways of cloning the Grafana repository, please refer to [GitHub's cloning a repository](https://docs.github.com/en/github/creating-cloning-and-archiving-repositories/cloning-a-repository) documentation.
**Warning:** Do not use `go get` to download Grafana. Recent versions of Go have added behavior which isn't compatible with the way the Grafana repository is structured.
## Build Grafana
Grafana consists of two components; the _frontend_, and the _backend_.
### Frontend
Before we can build the frontend assets, we need to install the dependencies:
```
yarn install --pure-lockfile
```
After the command has finished, we can start building our source code:
```
yarn start
```
Once `yarn start` has built the assets, it will continue to do so whenever any of the files change. This means you don't have to manually build the assets every time you change the code.
Next, we'll build the web server that will serve the frontend assets we just built.
### Backend
Build and run the backend by running `make run` in the root directory of the repository. This command compiles the Go source code and starts a web server.
> Are you having problems with [too many open files](#troubleshooting)?
By default, you can access the web server at `http://localhost:3000/`.
Log in using the default credentials:
| username | password |
| -------- | -------- |
| `admin` | `admin` |
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).
## Test Grafana
The test suite consists of three types of tests: _Frontend tests_, _backend tests_, and _end-to-end tests_.
### Run frontend tests
We use [jest](https://jestjs.io/) for our frontend tests. Run them using Yarn:
```
yarn jest
```
### Run backend tests
If you're developing for the backend, run the tests with the standard Go tool:
```
go test -v ./pkg/...
```
### 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).
To run the tests:
```
yarn e2e
```
By default, the end-to-end tests starts a Grafana instance listening on `localhost:3001`. To use a specific URL, set the `BASE_URL` environment variable:
```
BASE_URL=http://localhost:3333 yarn e2e
```
To follow the tests in the browser while they're running, use the `yarn e2e:debug`.
```
yarn e2e:debug
```
If you want to pick a test first, use the `yarn e2e:dev`, to pick a test and follow the test in the browser while it runs.
```
yarn e2e:dev
```
## Configure Grafana for development
The default configuration, `defaults.ini`, is located in the `conf` directory.
To override the default configuration, create a `custom.ini` file in the `conf` directory. You only need to add the options you wish to override.
Enable the development mode, by adding the following line in your `custom.ini`:
```
app_mode = development
```
### Add data sources
By now, you should be able to build and test a change you've made to the Grafana source code. In most cases, you need to add at least one data source to verify the change.
To set up data sources for your development environment, go to the [devenv](/devenv) directory in the Grafana repository:
```
cd devenv
```
Run the `setup.sh` script to set up a set of data sources and dashboards in your local Grafana instance. The script creates a set of data sources called **gdev-\<type\>**, and a set of dashboards located in a folder called **gdev dashboards**.
Some of the data sources require databases to run in the background.
Installing and configuring databases can be a tricky business. Grafana uses [Docker](https://docker.com) to make the task of setting up databases a little easier. Make sure you [install Docker](https://docs.docker.com/docker-for-mac/install/) before proceeding to the next step.
In the root directory of your Grafana repository, run the following command:
```
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`.
## Build a Docker image
To build a Docker image, run:
```
make build-docker-full
```
The resulting image will be tagged as grafana/grafana:dev.
> **Note:** If you've already set up a local development environment, and you're running a `linux/amd64` machine, you can speed up building the Docker image:
1. Build the frontend: `go run build.go build-frontend`.
1. Build the Docker image: `make build-docker-dev`.
**Note:** If you are using Docker for macOS, be sure to set the memory limit to be larger than 2 GiB. Otherwise, `grunt build` may fail. The memory limit settings are available under **Docker Desktop** -> **Preferences** -> **Advanced**.
## Troubleshooting
Are you having issues with setting up your environment? Here are some tips that might help.
### Too many open files when running `make run`
Depending on your environment, you may have to increase the maximum number of open files allowed. For the rest of this section, we will assume you are on a Unix like OS (e.g. Linux/macOS), where you can control the maximum number of open files through the [ulimit](https://ss64.com/bash/ulimit.html) shell command.
To see how many open files are allowed, run:
```
ulimit -a
```
To change the number of open files allowed, run:
```
ulimit -S -n 2048
```
The number of files needed may be different on your environment. To determine the number of open files needed by `make run`, run:
```
find ./conf ./pkg ./public/views | wc -l
```
Another alternative is to limit the files being watched. The directories that are watched for changes are listed in the `.bra.toml` file in the root directory.
To retain your `ulimit` configuration, i.e. so it will be remembered for future sessions, you need to commit it to your command line shell initialization file. Which file this will be depends on the shell you are using, here are some examples:
- zsh -> ~/.zshrc
- bash -> ~/.bashrc
Commit your ulimit configuration to your shell initialization file as follows ($LIMIT being your chosen limit and $INIT_FILE being the initialization file for your shell):
```
echo ulimit -S -n $LIMIT >> $INIT_FILE
```
Your command shell should read the initialization file in question every time it gets started, and apply your `ulimit` command.
For some people, typically using the bash shell, ulimit fails with an error similar to the following:
```
ulimit: open files: cannot modify limit: Operation not permitted
```
If that happens to you, chances are you've already set a lower limit and your shell won't let you set a higher one. Try looking in your shell initialization files (~/.bashrc typically), if there's already a ulimit command that you can tweak.
- Learn how to [Create a pull request](/contribute/create-pull-request.md).
- Read [How to contribute to Grafana as a junior dev](https://medium.com/@ivanahuckova/how-to-contribute-to-grafana-as-junior-dev-c01fe3064502) by [Ivana Huckova](https://medium.com/@ivanahuckova).
This documents guides you through the process of contributing to the Grafana documentation. Make sure you've read the guide for [Contributing to Grafana](/CONTRIBUTING.md).
## Your first contribution
If you’re unsure about where to start, check out some of our [open docs issues](https://github.com/grafana/grafana/issues?q=is%3Aopen+is%3Aissue+label%3Atype%2Fdocs).
Sometimes it can be difficult to understand an issue when you're just getting started. Refer to this list of [beginner-friendly issues](https://github.com/grafana/grafana/issues?q=is%3Aopen+is%3Aissue+label%3Atype%2Fdocs+label%3A"beginner+friendly") for tasks suitable for first-time contributors.
When you’ve found an issue you want to work on, please comment on the issue to let other people know you intend to work on it.
If you encounter any misspellings or violations to the style guide, please let us know by submitting an issue (or just fix them if they are minor changes).
On every page in the [documentation](https://grafana.com/docs/) are two links in the upper right corner:
- **Edit this page** takes you directly to the file on GitHub where you can contribute a fix.
- **Request doc changes** prepares an issue on GitHub with relevant information already filled in.
## Join our community
For general discussions on documentation, you’re welcome to join the `#docs` channel on our [public Grafana Slack](http://slack.raintank.io) team.
## Style and formatting
All Grafana documentation is written using [Markdown](https://en.wikipedia.org/wiki/Markdown), and can be found in the [docs](/docs) directory in the [Grafana GitHub repository](https://github.com/grafana/grafana). The [documentation website](https://grafana.com/docs) is generated with [Hugo](https://gohugo.io) which uses [Blackfriday](https://github.com/russross/blackfriday) as its Markdown rendering engine.
### Documentation structure
The Grafana documentation is organized into topics, called _sections_. You can take a look at the current build at [grafana.com/docs/](https://grafana.com/docs/).
Each top-level section is located under the [docs/sources](/docs/sources) directory. Subsections are added by creating a subdirectory in the directory of the parent section.
For each section, an `_index.md` file provides an overview of the topic.
### Style guide
Refer to the [Documentation style guide](style-guides/documentation-style-guide.md) for information about Grafana style, word choice, and grammar conventions.
### Spelling
The [codespell](https://github.com/codespell-project/codespell) tool is run for every change to catch common misspellings.
To run all linters, use the `lint-go` Makefile target:
```bash
make lint-go
```
## Testing
We value clean and readable code, that is loosely coupled and covered by unit tests. This makes it easier to collaborate and maintain the code.
Tests must use the standard library, `testing`. For assertions, prefer using [testify](https://github.com/stretchr/testify).
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.
1. [Set stability of an API](#set-stability-of-an-api)
1. [Deprecate an API](#deprecate-an-api)
1. [Specify parameters](#specify-parameters)
1. [Set return values](#set-return-values)
____
## Add package description
Each package has an overview explaining the overall responsibility and usage of the package.
You can document this description with [`@packageDocumentation`](https://api-extractor.com/pages/tsdoc/tag_packagedocumentation/) tag.
Add this tag to the `<packageRoot>/src/index.ts` entry file to have one place for the package description.
## Set stability of an API
All `exported` apis from the package should have a release tag to indicate its stability.
- [`@alpha`](https://api-extractor.com/pages/tsdoc/tag_alpha/) - early draft of api and will probably change.
- [`@beta`](https://api-extractor.com/pages/tsdoc/tag_beta/) - close to being stable but might change.
- [`@public`](https://api-extractor.com/pages/tsdoc/tag_public/) - ready for usage in production.
- [`@internal`](https://api-extractor.com/pages/tsdoc/tag_internal/) - for internal use only.
### Main stability of APIs
Add a tag to mark the stability of the whole exported `class/interface/function/type` etc.
Please place the `release tag` at the bottom of the comment to make it consistent among files and easier to read.
**Do:**
```typescript
/**
* Will help to create DataFrame objects and handle
* the heavy lifting of creating a complex object.
*
* @example
* ```typescript
* const dataFrame = factory.create();
* ```
*
* @public
**/
exportclassDataFrameFactory{
create():DataFrame{}
}
```
**Don't**
```typescript
/**
* Will help to create DataFrame objects and handle
* the heavy lifting of creating a complex object.
*
* @public
* @example
* ```typescript
* const dataFrame = factory.create();
* ```
**/
exportclassDataFrameFactory{
create():DataFrame{}
}
```
### Partial stability of APIs
Add the main stability of the API at the top according to [Main stability of API](#main-stability-of-api).
Then override the non-stable parts of the API with the proper [release tag](#release-tags). This should also be place at the bottom of the comment block.
**Do:**
```typescript
/**
* Will help to create DataFrame objects and handle
* the heavy lifting of creating a complex object.
*
* @example
* ```typescript
* const dataFrame = factory.create();
* ```
*
* @public
**/
exportclassDataFrameFactory{
create():DataFrame{}
/**
* @beta
**/
createMany():DataFrames[]{}
}
```
**Don't**
```typescript
/**
* Will help to create DataFrame objects and handle
* the heavy lifting of creating a complex object.
*
* @example
* ```typescript
* const dataFrame = factory.create();
* ```
**/
exportclassDataFrameFactory{
/**
* @public
**/
create():DataFrame{}
/**
* @beta
**/
createMany():DataFrame[]{}
}
```
## Deprecate an API
If you want to mark an API as deprecated to signal that this API will be removed in the future, then add the [`@deprecated`](https://api-extractor.com/pages/tsdoc/tag_deprecated/) tag.
If applicable add a reason why the API is deprecated directly after the `@deprecated tag`.
## Specify parameters
If you want to specify the possible parameters that can be passed to an API, then add the [`@param`](https://api-extractor.com/pages/tsdoc/tag_param/) tag.
This attribute can be skipped if the type provided by `typescript` and the function comment or the function name is enough to explain what the parameters are.
**Do:**
```typescript
/**
* Will help to create a resource resolver depending
* on the current execution context.
*
* @param context - The current execution context.
* @returns FileResolver if executed on the server otherwise a HttpResolver.
If you want to specify the return value from a function you can use the [`@returns`](https://api-extractor.com/pages/tsdoc/tag_returns/) tag.
This attribute can be skipped if the type provided by `typescript` and the function comment or the function name is enough to explain what the function returns.
**Do:**
```typescript
/**
* Will help to create a resource resolver depending
* on the current execution context.
*
* @param context - The current execution context.
* @returns FileResolver if executed on the server otherwise a HttpResolver.
This guide for Markdown style helps keep contributions consistent across all documentation created for Grafana products. Refer to the guide and update its sections as needed when a Subject Matter Expert answers a question on Markdown style, or a decision is made about how to apply Markdown.
## Headers
In Markdown, the number of "#" symbols creates different heading levels, similar to HTML heading levels:
**Example**
- \# is \<h1>.
- \#\# is \<h2>.
- \#\#\# is \<h3>.
Start your document with a single ``#`` for the title of the page. Add the sub-headings with two ``##``.
## Bold and emphasis
- Make text **bold** using two asterisks.
**Example:** It is ``**important**`` to use GitHub-flavored Markdown emoji consistently.
- Make text ``_emphasized_`` using single `` _underscores_``. Do not use the single asterisk, it can be easily confused with bold.
**Example:** GitHub-flavored markdown emoji should _only_ appear in specific cases.
## Links and references
Create links to other website by wrapping the display text in square brackets, and the web URL in curved brackets.
\[text to display](www.website.com)
**Example:** For more information on including emoji in GitHub-flavored markdown, refer to the [webfx page on emoji](https://www.webfx.com/tools/emoji-cheat-sheet/) for a list of emoji.
## Block quotes
Include block quotes inside text using right-facing arrows:
**Example**
> Any important information
> about emoji can be separated into
> a blockquote.
## Code blocks
Code blocks written with markdown can show off syntax highlighting specific to different languages. Use three back tics to create a code block:
```
function testNum(a) {
if (a > 0) {
return "positive";
} else {
return "NOT positive";
}
}
```
Write the name of the language after the first set of back tics, no spaces, to show specific syntax highlighting. For example; "\```javascript" produces the following:
```javascript
function testNum(a) {
if (a > 0) {
return "positive";
} else {
return "NOT positive";
}
}
```
## Tables
Construct a table by typing the table headings, and separating them with a "|" character. Then, add a second line of dashes ("-") separated by another "|" character. When constructing the table cells, separate each cell data with another "|".
**Example**
Heading one | Heading two
\------------|------------
Cell one data| Cell two data
Will publish as:
Heading one | Heading two
------------|------------
Cell one data| Cell two data
## Lists
### Numbered lists
To avoid inconsistent list numbering, use repetitive list numbering:
\1. First
\1. Second
\1. Third
The list above will always display as:
1. First
2. Second
3. Third
### Unordered lists
Build a list of points - an unordered or unnumbered list - by using "\-" (hyphen) characters.
**Example**
- First
- Another item
- The last list item
## Images
Include images in a document using the following syntax:
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).
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.
## Contributing
The *Documentation style guide* is a living document. Add to it whenever a style decision is made or a question is answered regarding style, grammar, or word choice.
## Published guides
For all items 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).
## Spelling
The [codespell](https://github.com/codespell-project/codespell) tool is run for every change to catch common misspellings.
## Inclusive language
This section provides guidelines on how to avoid using charged language in documentation.
### Allowing and blocking
Don't use "whitelist" or "blacklist" when referring to allowing or blocking content or traffic.
- When used as a noun, use "allowlist" or "blocklist".
- When used as a verb, use "allow" or "block"
Example: _To **allow** outgoing traffic, add the IP to the **allowlist**._
### Leader and follower
Don't use "master" or "slave" to describe relationships between nodes or processes.
- Use "leader", "main" or "primary," instead of "master."
- Use "follower" or "secondary," instead of "slave."
### Exceptions
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.
## 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.
### General
- Use active voice. Avoid passive voice.
- Passive: The heatmap visualization is displayed.
- 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."
- **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.
### 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
### Headings
- Write headings in sentence case, not title case.
- This is sentence case
- This Is Title Case
- Task topic headings start with a verb.
- 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.
- 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.
### Images
- Preferred format is .png
- File extension should be all lowercase.
- Preferred DPI is 72.
- 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.
### 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.
- "Keyboard shortcuts" when referring to the submenu topic.
- Generic and plural versions are always lowercase.
- Lowercase "dashboard" when referring to a dashboard generally.
- Lowercase "dashboards" when referring to multiple dashboards.
- **Exceptions:** If a term is lowercased in the Grafana UI, then match the UI.
### Links and references
When referencing another document, use "Refer to" rather than alternatives such as "See" or "Check out."
Always give the reader some idea of what to expect in the reference. Avoid blind references, such as, "Refer to [this file](link)."
When possible, use the exact title of the page or section you are linking to as the link text.
**Example**
Refer to the [Documentation style guide](documentation-style-guide.md) for information about word usage and capitalization guidelines.
### Notes, tips, cautions, and warnings
Grafana documentation uses notes, tips, cautions, and warnings. Notes are the most common. The format for all of them is indented, bold, sentence case:
```
> **Note:**
```
#### Notes
Notes provide additional information that the user should be extra aware of. For example:
> **Note:** This page describes a feature for Grafana 7.0 beta.
#### Tips
Tips describe alternate or more efficient ways of doing things. Rarely used.
#### Cautions
Cautions warn the user that they should proceed with caution. Use cautions to emphasize the potential downside of a course of action.
> **Caution:** If you turn off authentication requirements, then anyone can access your Grafana instance. This poses a considerable security risk.
#### Warnings
Warnings tell the user not to do something. For example:
> **Warning:** Grafana does not back up your dashboards. If you delete a dashboard, then you might not be able to recover it.
### Command line examples
- 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`
- Include `sudo` before commands that require `sudo` to work.
For terminal examples and Grafana configuration, use a `bash` code block:
```bash
sudo yum install grafana
```
For HTTP request/response, use an `http` code block:
Grafana products has some words, abbreviations, and terms particular to the Grafana discourse community.
#### checkout, check out
Two words if used as a verb, one word if used as a noun.
**Examples**
- Check out these new features!
- Proceed to checkout.
#### data source
Two words, not one
**Exceptions:**
- "datasource" used as an identifier
- "datasource" in a URL
- Use "data source" instead of "datasource" unless used as an identifier, in code, or as part of a URL.
- Spell out "repository" and avoid the shorter "repo."
- Use "Unix" as the preferred spelling (as opposed to "UNIX", or "unix") when referring to the family of operating systems.
#### display (verb)
*Display* is a transitive verb, which means it always needs a direct object.
- Correct, active voice: Grafana displays your list of active alarms.
- Correct, but passive voice: Your list of active alarms is displayed.
- Incorrect: The list of active alarms displays.
#### drawer
Do not use. This is developer jargon that refers to a UI panel. Refer to the panel or feature by its proper name.
#### intro, introduction
"Introduction" is the preferred word. Use "intro" if there are space constraints (like on the side menu) or you are specifically trying for a less formal, more conversational tone.
#### metadata
One word, not two.
#### 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._
#### setup, set up
Two words if used as a verb, one word if used as a noun.
This document is specific to the [Grafana repository](https://github.com/grafana/grafana). Be sure that you've read the [generalized E2E document](e2e.md).
## Commands
-`yarn e2e` Creates an isolated `grafana-server` home under _\<repo-root>/e2e/tmp_ with provisioned data sources and dashboards. This copies locally build binary and frontend assets from your repo root so you need to have a built backend and frontend for this to run locally. The server starts on port 3001 so it does not conflict with your normal dev server.
-`yarn e2e:debug` Same as above but runs the tests in chrome and does not shutdown after completion.
-`yarn e2e:dev` Same as above but does not run any tests on startup. It lets you pick a test first.
If you already have a Grafana instance running, you can provide a specific URL by setting the `BASE_URL` environment variable:
```shell
BASE_URL=http://172.0.10.2:3333 yarn e2e
```
The above commands use some utils scripts under [_\<repo-root>/e2e_](../../e2e) that can also be used for more control.
-`./e2e/start-server` This creates a fresh new grafana server working dir, setup's config and starts the server. It will also kill any previously started server that is still running using pid file at _\<repo-root>/e2e/tmp/pid_.
-`./e2e/wait-for-grafana` waits for `$HOST` and `$PORT` to be available. Per default localhost and 3001.
-`./e2e/run-suite <debug|dev|noarg>` Starts cypress in different modes.
## Test suites
All the integration tests are located at _\<repo-root>/e2e/suite\<x>/specs_. The page objects and reusable flows are in the [_\<repo-root>/packages/grafana-e2e_](../../packages/grafana-e2e) package.
Be sure that you've read the [generalized E2E document](e2e.md).
## Commands
-`yarn test:e2e` will run [Grafana's E2E utility](../../packages/grafana-e2e) against an already running Grafana server.
-`yarn test:e2e:update` will run `test:e2e` but instead of asserting that screenshots match their expected fixtures, they'll be replaced with new ones.
Your running Grafana instance can be targeted by setting the `CYPRESS_BASE_URL`, `CYPRESS_USERNAME` and `CYPRESS_PASSWORD` environment variableS:
Grafana Labs uses a minimal [homegrown solution](../../packages/grafana-e2e) built on top of [Cypress](https://cypress.io) for its end-to-end (E2E) tests.
Important notes:
- We generally store all element identifiers ([CSS selectors](https://mdn.io/docs/Web/CSS/CSS_Selectors)) within the framework for reuse and maintainability.
- We generally do not use stubs or mocks as to fully simulate a real user.
- Cypress' promises [do not behave as you'd expect](https://docs.cypress.io/guides/core-concepts/introduction-to-cypress.html#Mixing-Async-and-Sync-code).
- [Testing core Grafana](e2e-core.md) is slightly different than [testing plugins](e2e-plugins.md).
## Framework structure
Inspired by https://martinfowler.com/bliki/PageObject.html
-`Selector`: A unique identifier that is used from the E2E framework to retrieve an element from the Browser
-`Page`: An abstraction for an object that contains one or more `Selectors` with `visit` function to navigate to the page.
-`Component`: An abstraction for an object that contains one or more `Selectors` but without `visit` function
-`Flow`: An abstraction that contains a sequence of actions on one or more `Pages` that can be reused and shared between tests
## Basic example
Let's start with a simple [JSX](https://reactjs.org/docs/introducing-jsx.html) example containing a single input field that we want to populate during our E2E test:
```jsx
<input
className="gf-form-input login-form-input"
type="text"
/>
```
We _could_ target the field with a CSS selector like `.gf-form-input.login-form-input` but that would be brittle as style changes occur frequently. Furthermore there is nothing that signals to future developers that this input is part of an E2E test. At Grafana, we use `aria-label` attributes as our preferred way of defining selectors instead of [`data-*`](https://mdn.io/docs/Web/HTML/Global_attributes/data-*) as they also aid in [accessibility](https://mdn.io/docs/Learn/Accessibility/What_is_accessibility):
```jsx
<input
aria-label="Username input field"
className="gf-form-input login-form-input"
type="text"
/>
```
The next step is to create a `Page` representation in our E2E framework to glue the test with the real implementation using the `pageFactory` function. For that function we can supply a `url` and `selectors` like in the example below:
```typescript
exportconstLogin={
// Called via `Login.visit()`
url:'/login',
// Called via `Login.username()`
username:'Username input field',
};
```
The next step is to add the `Login` page to the `Pages` export within [_\<repo-root>/packages/grafana-e2e-selectors/src/selectors/pages.ts_](../../packages/grafana-e2e-selectors/src/selectors/pages.ts) so that it appears when we type `e2e.pages` in our IDE.
```typescript
exportconstPages={
Login,
…,
…,
…,
};
```
Now that we have a `Page` called `Login` in our `Pages` const we can use that to add a selector in our html like shown below and now this really signals to future developers that it is part of an E2E test.
```jsx
import{selectors}from'@grafana/e2e-selectors';
<input
aria-label={selectors.pages.Login.username}
className="gf-form-input login-form-input"
type="text"
/>
```
The last step in our example is to use our `Login` page as part of a test.
- The `url` property is used whenever we call the `visit` function and is equivalent to the Cypress' [`cy.visit()`](https://docs.cypress.io/api/commands/visit.html#Syntax).
- Any defined selector can be accessed from the `Login` page by invoking it. This is equivalent to the result of the Cypress function [`cy.get(…)`](https://docs.cypress.io/api/commands/get.html#Syntax).
```typescript
describe('Login test',()=>{
it('passes',()=>{
e2e.pages.Login.visit();
// To prevent flaky tests, always do a `.should` on any selector that you expect to be in the DOM.
// Read more here: https://docs.cypress.io/guides/core-concepts/retry-ability.html#Commands-vs-assertions
e2e.pages.Login.username()
.should('be.visible')
.type('admin');
});
});
```
## Advanced example
Let's take a look at an example that uses the same `selector` for multiple items in a list for instance. In this example app we have a list of data sources that we want to click on during an E2E test.
Just as before in the basic example we'll start by creating a page abstraction using the `pageFactory` function:
```typescript
exportconstDataSources={
url:'/datasources',
dataSources:(dataSourceName: string)=>`Data source list item ${dataSourceName}`,
};
```
You might have noticed that instead of a simple `string` as the `selector`, we're using a `function` that takes a string parameter as an argument and returns a formatted string using the argument.
Just as before we need to add the `DataSources` page to the exported const `Pages` in `packages/grafana-e2e-selectors/src/selectors/pages.ts`.
The next step is to use the `dataSources` selector function as in our example below:
When this list is rendered with the data sources with names `A`, `B` and `C` ,the resulting HTML would look like:
```html
<divclass="card-item-name"aria-label="Data source list item A">A</div>
<divclass="card-item-name"aria-label="Data source list item B">B</div>
<divclass="card-item-name"aria-label="Data source list item C">C</div>
```
Now we can write our test. The one thing that differs from the [basic example](#basic-example) above is that we pass in which data source we want to click on as an argument to the selector function:
```typescript
describe('List test',()=>{
it('clicks on data source named B',()=>{
e2e.pages.DataSources.visit();
// To prevent flaky tests, always do a .should on any selector that you expect to be in the DOM.
// Read more here: https://docs.cypress.io/guides/core-concepts/retry-ability.html#Commands-vs-assertions
- [Proposal for removing or replacing Angular dependencies](https://github.com/grafana/grafana/pull/23048)
## Basic rules
- Try to keep files small and focused.
- Break large components up into sub-components.
- Use spaces for indentation.
### Naming conventions
#### Use `PascalCase` for:
##### Typescript class names
```typescript
// bad
classdataLink{
//...
}
// good
classDataLink{
//...
}
```
##### Types and interfaces
```
// bad
interface buttonProps {
//...
}
// bad
interface button_props {
//...
}
// bad
interface IButtonProps {
//...
}
// good
interface ButtonProps {
//...
}
// bad
type requestInfo = ...
// bad
type request_info = ...
// good
type RequestInfo = ...
```
##### Enums
```
// bad
enum buttonVariant {
//...
}
// good
enum ButtonVariant {
//...
}
```
#### Use `camelCase` for:
##### Functions
```typescript
// bad
constCalculatePercentage=()=>{...}
// bad
constcalculate_percentage=()=>{...}
// good
constcalculatePercentage=()=>{...}
```
##### Methods
```typescript
classDateCalculator{
// bad
CalculateTimeRange(){...}
}
classDateCalculator{
// bad
calculate_time_range(){...}
}
classDateCalculator{
// good
calculateTimeRange(){...}
}
```
##### Variables
```typescript
// bad
constQueryTargets=[];
// bad
constquery_targets=[];
// good
constqueryTargets=[];
```
##### React state and properties
```typescript
interfaceModalState{
// bad
IsActive: boolean;
// bad
is_active: boolean;
// good
isActive: boolean;
}
```
##### Emotion class names
```typescript
constgetStyles==()=>({
// bad
ElementWrapper: css`...`,
// bad
["element-wrapper"]:css`...`,
// good
elementWrapper: css`...`,
});
```
#### Use `ALL_CAPS` for constants.
```typescript
// bad
constconstantValue="This string won't change";
// bad
constconstant_value="This string won't change";
// good
constCONSTANT_VALUE="This string won't change";
```
#### Use [BEM](http://getbem.com/) convention for SASS styles.
_SASS styles are deprecated. Please migrate to Emotion whenever you need to modify SASS styles._
### Typing
In general, you should let Typescript infer the types so that there's no need to explicitly define type for each variable.
There are some exceptions to this:
```typescript
// Typescript needs to know type of arrays or objects otherwise it would infer it as array of any
// bad
conststringArray=[];
// good
conststringArray: string[]=[];
```
Specify function return types explicitly in new code. This improves readability by being able to tell what a function returns just by looking at the signature. It also prevents errors when a function's return type is broader than expected by the author.
> **Note:** We don't have linting for this enabled because of lots of old code that needs to be fixed first.
- When the primary export is a class or React component, use PascalCase.
- When the primary export is a function, use camelCase.
For files exporting multiple utility functions, use the name that describes the responsibility of grouped utilities. For example, a file exporting math utilities should be named `math.ts`.
- Use `constants.ts` for files exporting constants.
- Use `actions.ts` for files exporting Redux actions.
- Use `reducers.ts` Redux reducers.
- Use `*.test.ts(x)` for test files.
### Code organization
Organize your code in a directory that encloses feature code:
- Put Redux state and domain logic code in `state` directory (i.e. `features/my-feature/state/actions.ts`).
- Put React components in `components` directory (i.e. `features/my-feature/components/ButtonPeopleDreamOf.tsx`).
- Put test files next to the test subject.
- Put containers (pages) in feature root (i.e. `features/my-feature/DashboardPage.tsx`).
- Subcomponents can live in the component folders. Small component do not need their own folder.
- Component SASS styles should live in the same folder as component code.
For code that needs to be used by external plugin:
- Put components and types in `@grafana/ui`.
- Put data models and data utilities in `@grafana/data`.
- Put runtime services interfaces in `@grafana/runtime`.
#### Exports
- Use named exports for all code you want to export from a file.
- Use declaration exports (i.e. `export const foo = ...`).
- Export only the code that is meant to be used outside the module.
### Comments
- Use [TSDoc](https://github.com/microsoft/tsdoc) comments to document your code.
- Use [react-docgen](https://github.com/reactjs/react-docgen) comments (`/** ... */`) for props documentation.
- Use inline comments for comments inside functions, classes etc.
- Please try to follow the [code comment guidelines](./code-comments.md) when adding comments.
### Linting
Linting is performed using [@grafana/eslint-config](https://github.com/grafana/eslint-config-grafana).
## React
Use the following conventions when implementing React components:
### Props
##### Name callback props and handlers with an "on" prefix.
Sometimes you encounter a `resulting state` that contains properties that are hard to compare, such as `Dates`, but you still want to compare that other props in state are correct.
Then you can use `thenStatePredicateShouldEqual` function on `reducerTester` that will return the `resulting state` so that you can expect upon individual properties..
[Storybook](https://storybook.js.org/) is a tool which we use to manage our design system and the components which are a part of it. Storybook consists of _stories:_ each story represents a component and a case in which it is used. To show a wide variety of use cases is good both documentation wise and for troubleshooting -- it might be possible to reproduce a bug for an edge case in a story.
Storybook is:
- A good way to publish our design system with its implementations
- Used as a tool for documentation
- Used for debugging and displaying edge cases
## How to create stories
Stories for a component should be placed next to the component file. The Storybook file requires the same name as the component file. For example, a story for `SomeComponent.tsx` will have the file name `SomeComponent.story.tsx`. If a story should be internal, not visible in production, name the file `SomeComponent.story.internal.tsx`.
### Writing stories
When writing stories, we use the [CSF format](https://storybook.js.org/docs/formats/component-story-format/). For more in-depth information on writing stories, see [Storybook’s documentation on writing stories](https://storybook.js.org/docs/basics/writing-stories/).
With the CSF format, the default export defines some general information about the stories in the file:
-`title`: Where the component is going to live in the hierarchy
-`decorators`: A list which can contain wrappers or provide context, such as theming
```jsx
// In MyComponent.story.tsx
importMyComponentfrom'./MyComponent';
exportdefault{
title:'General/MyComponent',
component:MyComponent,
decorators:[...],
}
```
When it comes to writing the actual stories, you continue in the same file with named exports. The exports are turned into the story name.
```jsx
// Will produce a story name “some story”
exportconstsomeStory=()=><MyComponent/>;
```
If you want to write cover cases with different values for props, then using knobs is usually enough. You don’t need to create a new story. This will be covered further down.
### Categorization
We currently have these categories:
- **Docs Overview** - Guidelines and information regarding the design system
- **Forms** - Components commonly used in forms such as different kind of inputs
- **General** - Components which can be used in a lot of different places
- **Visualizations** - Data visualizations
- **Panel** - Components belonging to panels and panel editors
## Writing MDX documentation
An MDX file is basically a markdown file with the possibility to add jsx. These files are used by Storybook to create a “docs” tab.
### Link the MDX file to a component’s stories
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 the MDX file
importmdxfrom"./TabsBar.mdx";
exportdefault{
title:"General/Tabs/TabsBar",
component:TabsBar,
parameters:{
docs:{
// This is the reference required for the MDX file
page:mdx,
},
},
};
```
### MDX file structure
There are some things that the MDX file should contain:
- When and why the component should be used
- Best practices - dos and don’ts for the component
- Usage examples with code. It is possible to use the `Preview` element to show live examples in MDX
- Props table. This can be generated by doing the following:
```jsx
// In MyComponent.mdx
import{Props}from"@storybook/addon-docs/blocks";
import{MyComponent}from"./MyComponent";
<Propsof={MyComponent}/>;
```
### MDX file without a relationship to a component
An MDX file can exist by itself without any connection to a story. This can be good for writing things such as a general guidelines page. Two things are required for this to work:
- The file needs to be named `*.story.mdx`
- A `Meta` tag must exist that says where in the hierarchy the component lives. It can look like this:
```jsx
<Metatitle="Docs Overview/Color Palettes"/>
#Guidelinesforusingcolors
...
```
You can add parameters to the Meta tag. This example shows how to hide the tools:
A quick way to get an overview of what a component does is by looking at its properties. That's why it is important that we document these in a good way.
### Comments
When writing the props interface for a component, it is possible to add a comment to that specific property, which will end up in the Props table in the MDX file. The comments are generated by [react-docgen](https://github.com/reactjs/react-docgen) and are formatted by writing `/** */`.
```jsx
interfaceMyProps{
/** Sets the initial values, which are overridden when the query returns a value*/
defaultValues:Array<T>;
}
```
### Knobs
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.
```jsx
// In MyComponent.story.tsx
import{number,text}from"@storybook/addon-knobs";
exportconstbasicStory=()=>(
<MyComponent
max={number("Max value",10)}
min={number("Min value",-10)}
title={text("Title","Look at the value!")}
/>
);
```
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:
[Emotion](https://emotion.sh/docs/introduction) is our default-to-be approach to styling React components. It provides a way for styles to be a consequence of properties and state of a component.
## Usage
### Basic styling
For styling components, use [Emotion's `css` function](https://emotion.sh/docs/emotion#css).
```tsx
importReactfrom'react';
import{css}from'emotion';
constComponentA=()=>(
<div
className={css`
background: red;
`}
>
Asredasyoucanget
</div>
);
```
### Styling with theme
To access the theme in your styles, use the `useStyles` hook. It provides basic memoization and access to the theme object.
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:
**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:
#### Using `withTheme` higher-order component (HOC)
With this method your component will be automatically wrapped in `ThemeContext.Consumer` and provided with current theme via `theme` prop. Components used with `withTheme` must implement the `Themeable` interface.
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:
```tsx
import{mockThemeContext}from'@grafana/ui';
import{MyComponent}from'./MyComponent';
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();
});
});
```
## FAQ
This section provides insight into frequently-asked questions.
### How can I modify Sass variable files?
**If possible, migrate styles to Emotion**
> For the following to apply you need to run `yarn dev` task.
`[_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:
Templates are both a starting point and an instruction manual for writing something new. They are intended to make life easier by providing a jumping-off point, something besides a blank page to start from. They are not intended to be a limitation. If the template does not work perfectly for your use case, you can adjust or change it. We will work it out in code review.
## Create a template
Feel free to add templates to the `templates` folder. Try to make them as generic as possible and include clear instructions for when and how to use the template. Assume that the template user is a brand new contributor and write accordingly.
## Use a template
1. Read the template. Make sure you understand what it is for and how it is intended to be used.
1. Copy and rename the template. Move it to where you actually need it.
You might also want to copy the content of the template and paste it into a different file. This is acceptable use.
1. Replace the template content with your own. Delete whatever is unnecessary.
## Documentation templates
In an ideal world, each topic will correspond to an information *type* ([task](doc-task-template.md), [reference](doc-reference-template.md), [concept](doc-concept-template.md)) and contain only that type of information.
However, this is not always practical. For example, you have a series of short topics, you can group them into one topic.
Try to *chunk* your content. This means you should organize the document so that the same kinds of content are grouped together.
### Chunking example
If I was writing content for a site called *Doggie handbook*, I might organize it like this.
**Concept**
- What a dog is
- Brief history of dogs
- Why you might want a dog
- Tasks dogs can be trained to do
**Tasks**
- Feed the dog
- Groom the dog
- Train the dog
**Reference**
- List of dog equipment you will need
- Table of breeds that includes breed name, size range, short or long hair, and type of dog
### Audience
Write for an audience that is computer literate and has general technical knowledge, but is not necessarily familiar with Grafana or the finer points of observability.
Pretend you are explaining your topic to a brand new Grafana user or developer.
### Self-contained
Thanks to search engines, every page in the documentation might be a reader's entry point. This means that each page needs to be self-contained and make sense on its own. The reader should not need to read other topics in order to perform the task or understand the concept.
However, try to be helpful and link to related information. Using the *Doggie handbook* example, the concept topic that explains what dogs can be trained to do might link to the Train the dog task.
DELETE THIS LINE: If draft = false, then the document will not be built in the doc site. If the date is earlier than the build date, than the document will not show in the build site. Use these settings to control whether future content is shown in the doc site.
The title of the concept topic will generally be a noun or a gerund. Examples include Templates, Templating, Dashboards, and panels.
Concepts are topic types for any information that doesn't involve task lists or reference information. Ideally you use concept elements to explain concepts, ideas, overviews, workflows, and the like. In the intro section, this first paragraph or two, you should explain to the user what to expect in this topic or section.
[Permissions overview](https://grafana.com/docs/grafana/latest/permissions/overview/) is an example of a concept topic.
## Idea
Concept topics or sections explain *what* and *why*. They do not explain *how*. If you are a new user, you might look for concept information to learn about what Grafana is, why it might be useful to you, and what the general workflow is.
## Workflow
Continuing the example in the previous section, here is a sample Grafana workflow.
1. Install Grafana. <link to task for installing Grafana>
1. Set up data sources. <link to data sources concept topic, which links to data source task topics>
1. Create panels. <link to panel concept topic, which links to tasks>
1. Create dashboards. <link to panel concept topic, which links to tasks>
1. Enter queries. <link to query editor concept topic>
1. Add users. <link to user management concept topic, which links to tasks>
1. Create playlists. <link to Playlist topic that contains concept information and tasks>
## Next steps
Concept tasks often link to related information, including *tasks* related to the concept and *reference* topics related to the concept.
DELETE THIS LINE: If draft = false, then the document will not be built in the doc site. If the date is earlier than the build date, than the document will not show in the build site. Use these settings to control whether future content is shown in the doc site.
The *reference* topic type is for storing reference information, such as extensive tables, lists, or other information that is used as support for a task. Reference topics are also designed for API information.
Often reference topics are linked from *task* topics, because they contain information the user needs in order to perform a task.
[Grafana CLI](https://grafana.com/docs/grafana/latest/administration/cli/) is one example of a reference topic.
## Lists
Lists of commands or parameters are often organized in reference topics. The information you need to present will dictate the format.
- They might
- be in
- unordered lists.
[Configuration](https://grafana.com/docs/grafana/latest/installation/configuration/) is an example of lists.
## Tables
If you have a large list of things to store in a table, then you are probably dealing with reference information. Hugo accepts either tables in Markdown or in HTML format, so use whichever is easier for you.
The [Glossary](https://grafana.com/docs/grafana/latest/guides/glossary/) provides an example of reference data in a table.
### Empty markdown table
While you might not need a heading for each table, headings are a good way to chunk information if you have several tables. They also make the content easy to skim. Use headings or intro paragraphs like this one to explain to the reader what the information in the table is used for.
| | | | | | |
|:---|:---|:--:|:--:|---:|---:|
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
### Empty HTML table
And here is intro text, similar to the paragraph in the previous section. Do not add local styling to the table. The website CSS will take care of that for you.
<table>
<tr>
<th>Firstname</th>
<th>Lastname</th>
<th>Age</th>
</tr>
<tr>
<td>Jill</td>
<td>Smith</td>
<td>50</td>
</tr>
<tr>
<td>Eve</td>
<td>Jackson</td>
<td>94</td>
</tr>
</table>
## API documentation
API documentation is always a reference topic rather than a task topic, but it has its own rules.
A *task* topic is intended for a procedure that describes how to accomplish a task. It lists a series of steps that users follow to produce an intended outcome. It tells the reader *how* to do something. [Install Grafana plugins](https://grafana.com/docs/grafana/latest/plugins/installation/) and [Playlist](https://grafana.com/docs/grafana/latest/reference/playlist/) are examples of task topics. Playlist includes a small amount of concept information in the introduction, which is appropriate.
Always include an introduction of a short paragraph or two to explain what the task is for, perhaps give the reader an idea of what the outcome will be.
In most cases, each topic should only contain one task. If you have several very short, related tasks, then you might combine them into one topic.
In the case of a long task, then you probably won't need any headings except for the h1 at the top of the page.
1. Start with step one.
1. Use second-person imperative tense.
1. Basically, "You, do this" with every sentence.
1. Do not use the third-person "user" for steps you want the reader ("you") to perform.
1. Write steps that contain one action, possibly two related actions, such as copy and paste a thing or save and quit the program.
If a sentence is not telling the reader to do something, then it is not a step. You can use nested images or paragraphs like this one to add information if necessary.
In many cases, you should tell the reader what the outcome should be so that they know when they are done.
## One-step task
Some tasks are so short, they only contain one step.
Write one-step tasks as simple sentences, not as unordered lists or numbered lists.
## Short task
Short tasks can be grouped. How short constitutes "short" is a judgment call based on number of steps and how long individual steps are.
1. Use your judgment.
1. Ask your coworkers or someone on the Comm team for advice if you aren't sure.
## Next steps
If the task you are writing leads naturally to one or more other tasks, then include links after the task to help the reader figure out where to go next.
Thanks to internet search engines, every page in the documentation could be page one. Pretend you are explaining your task to a new Grafana user who just walked in off the street.
## Testing
It is a good practice to have someone else test the task you have written. If they can successfully complete the task using *only* what the steps you have written, not guessing or using their inherent knowledge, then your task has passed the test. However, it is very common to find you have skipped steps, because *you* are very familiar with Grafana and the topic you are explaining.
New users or people from other teams are very helpful for these tests.
Triage helps ensure that issues resolve quickly by:
- Ensuring the issue's intent and purpose is conveyed precisely. This is necessary because it can be difficult for an issue to explain how an end user experiences a problem and what actions they took.
- Giving a contributor the information they need before they commit to resolving an issue.
- Lowering the issue count by preventing duplicate issues.
- Streamlining the development process by preventing duplicate discussions.
This document gives you some ideas on what you can do to help. For more information, read more about [how the core Grafana team triage issues](/ISSUE_TRIAGE.md).
## Improve issues
Improve issues by suggesting improvements to the title and description. If you think an issue has formatting issues, bad language, or grammatical errors, post a comment to let the author and maintainers know.
## Report resolved issues
If you think an issue has been resolved, or is no longer relevant, suggest us to close it. Add a comment on the issue, where you explain the reason it should be closed. Make sure to include any related issues and pull requests.
## Investigate issues
Investigate issues that we haven't been able to reproduce yet. In some cases, there are many combinations of panels, dashboards, and data sources that make it difficult for us to reproduce certain issues. Help us by adding more information.
## Vote on issues
Use [GitHub reactions](https://help.github.com/en/articles/about-conversations-on-github#reacting-to-ideas-in-comments) to let us know what's important to you. Vote on bugs if you've experienced the same problem. **Don't vote, or react, by commenting on the issue.**
Read more about [how we prioritize issues](/ISSUE_TRIAGE.md#4-prioritization-of-issues).
## Report duplicates
If you find two issues that describe the same thing, add a comment in one of the issues, with a reference (`#<issue number>`) to the other. Explain why you think the issue is duplicated.
This folder contains useful scripts and configuration for...
# Set up your development environment
* Configuring dev datasources in Grafana
* Configuring dev & test scenarios dashboards.
This folder contains useful scripts and configuration so you can:
- Configure data sources in Grafana for development.
- Configure dashboards for development and test scenarios.
- Create docker-compose file with databases and fake data.
## Install Docker
Grafana uses [Docker](https://docker.com) to make the task of setting up databases a little easier. If you do not have it already, make sure you [install Docker](https://docs.docker.com/docker-for-mac/install/) before proceeding to the next step.
## Developer dashboards and data sources
```bash
./setup.sh
```
After restarting grafana server there should now be a number of datasources named `gdev-<type>` provisioned as well as a dashboard folder named `gdev dashboards`. This folder contains dashboard & panel features tests dashboards.
After restarting the Grafana server, there should be a number of datasources named `gdev-<type>` provisioned as well as
a dashboard folder named `gdev dashboards`. This folder contains dashboard and panel features tests dashboards.
# Dev dashboards
Please update these dashboards or make new ones as new panels and dashboards features are developed or new bugs are
found. The dashboards are located in the `devenv/dev-dashboards` folder.
Please update these dashboards or make new ones as new panels & dashboards features are developed or new bugs are found. The dashboards are located in the `devenv/dev-dashboards` folder.
## docker-compose with databases
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.
```bash
make devenv sources=influxdb,prometheus2,elastic5
```
Some of the blocks support dynamic change of the image version used in the Docker file. The signature looks like this:
```bash
make devenv sources=postgres,openldap,grafana postgres_version=9.2 grafana_version=6.7.0-beta1
```
### Notes per block
#### Grafana
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.
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.