* Chore: grafana-toolkit uses grafana-ui and grafana-data workspaces (#30701)
* chore(grafana-toolkit): use workspace versions of grafana/ui and grafana/data
* chore: replace references to popperjs 1 typings with popperjs 2 typings
(cherry picked from commit 4b25310941)
* revert(grafana-toolkit): put back 7.4 version of eslint-config (2.1.0)
* Fix disable bug by passing hide prop
* Make more universal fix
* Revert to original fix
* Update public/app/plugins/datasource/prometheus/components/PromQueryEditor.tsx
Co-authored-by: Zoltán Bedi <zoltan.bedi@gmail.com>
Co-authored-by: Zoltán Bedi <zoltan.bedi@gmail.com>
(cherry picked from commit 4f61edd28d)
Co-authored-by: Ivana Huckova <30407135+ivanahuckova@users.noreply.github.com>
* ensure empty errors are not passed to the panel
* make it a oneliner
(cherry picked from commit 92ae019f8e)
Co-authored-by: Erik Sundell <erik.sundell@grafana.com>
* LibraryPanels: Disconnect before connect during dashboard save
* Tests: fixed test
* Chore: updates after PR comments
* Chore: changes from context.Background() to c.Context.Req.Context()
* Chore: fixes lint issue
(cherry picked from commit 06e6bcf091)
Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>
* SqlDataSources: Fixes the Show Generated SQL button in query editors
* No need to protect against duplicate events now that the event emitter is isolated for each editor
(cherry picked from commit e4672906f0)
Co-authored-by: Torkel Ödegaard <torkel@grafana.org>
* Variables: Adds back default option for data source variable
* Chore: updates after PR comments
(cherry picked from commit f993f2c7cc)
Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>
* Remove last synchronisation field from LDAP debug view
* Apply review comments
(cherry picked from commit f9a293afea)
Co-authored-by: Tania B <yalyna.ts@gmail.com>
* Cfg: fix hidden users initialization
* add tests
* do not call isHiddenUser function for non-user permission
* do not call isHiddenUser function for non-user permission
(cherry picked from commit 7f1f559929)
Co-authored-by: Agnès Toulet <35176601+AgnesToulet@users.noreply.github.com>
* Add configuration in ConfigEditor and default to 1000
* Show data in explore if any even if there is an error
* Update pkg/tsdb/influxdb/flux/executor.go
* Better handling of defaults
* Add test for runQuery to show data even with error
* Update public/app/store/configureStore.ts
Co-authored-by: Giordano Ricci <gio.ricci@grafana.com>
* Update public/app/plugins/datasource/influxdb/components/ConfigEditor.tsx
Co-authored-by: Ivana Huckova <30407135+ivanahuckova@users.noreply.github.com>
* Update tooltip
* Update input
* Lint fixes
* Update snapshots
* Update decorator tests
Co-authored-by: Giordano Ricci <gio.ricci@grafana.com>
Co-authored-by: Ivana Huckova <30407135+ivanahuckova@users.noreply.github.com>
(cherry picked from commit e0448513eb)
* DashboardLinks: Fixes crash when link misses title
* Chore: updates after PR comments
(cherry picked from commit 297ff9a168)
Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>
* Make imports relative
* Fix Alias field value not being shown
(cherry picked from commit b46235715d)
Co-authored-by: Giordano Ricci <gio.ricci@grafana.com>
* BarGauge: Increase min value width and fix height when setting manual text size
* updated snapshot
* Big improvement to bar gauge value sizing and fixing table gauge sizing
* removed unused const
* added a unit test
(cherry picked from commit 39d7ebc7d1)
Co-authored-by: Torkel Ödegaard <torkel@grafana.org>
* Graph: Fixes so graph is shown for non numeric time values
* Tests: changes times to UTC
* Tests: forgot one value in time array
* GraphNG: make time series panel work with string time stamps (#30981)
* Make Time series panel work with data that time is represented as string
* Map to for
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
(cherry picked from commit bd28512d29)
Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>
* TextPanel: Fixes so panel title is updated when variables change
* Tests: fixes tests
* Chore: updates after PR comments
(cherry picked from commit f42bb84cbf)
Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>
* Updated
* DataSourceSettings: Adds info box and link to Grafana Cloud
* Updated wording
* Less words
* use variables
* Fixing ts issues
* fixed import
(cherry picked from commit 56ef7c4a4c)
Co-authored-by: Torkel Ödegaard <torkel@grafana.org>
* GrafanaUI: Add a way to persistently close InfoBox
InfoBox and FeatureInfoBox can take up a lot of screen realestate. This makes it easy to let the user close the boxes.
* Migrate InfoBox story to controls
(cherry picked from commit 99acad4448)
Co-authored-by: Oscar Kilhed <oscar.kilhed@grafana.com>
* Introduce PluginRequestValidator abstraction with a NoOp implementation
* Update PluginRequestValidator abstraction to use the dsURL instead
* Inject PluginRequestValidator into the HTTPServer and validate requests going through data source proxy
* Inject PluginRequestValidator into the BackendPluginManager and validate requests going through it
* Validate requests going through QueryMetrics & QueryMetricsV2
* Validate BackendPluginManager health requests
* Fix backend plugins manager tests
* Validate requests going through alerting service
* Fix tests
* fix tests
* goimports
Co-authored-by: Leonard Gram <leo@xlson.com>
(cherry picked from commit 6415d2802e)
Co-authored-by: Joan López de la Franca Beltran <joanjan14@gmail.com>
* feat(grafana-ui): add an escape key listener to Modal
* Update packages/grafana-ui/src/components/Modal/Modal.tsx
Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
* feat(grafana-ui): add closeOnEscape prop to control Modal behaviour
Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
(cherry picked from commit 3066b38c5e)
Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>
* add compile variable in tooltip link
* test(link_srv): introduce getAnchorInfo test
* test(link_srv): introduce tests for getLinkUrl
* test(link_srv): refer to anchorInfo.url rather than hardcode expected
Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>
(cherry picked from commit 141202f518)
Co-authored-by: Ha. Huynh Sam <huynhha12798@gmail.com>
* Wip
* fix(grafana-ui): add no data message to Table component
(cherry picked from commit 4f684cc498)
Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>
* bump cypress to 6.3.0
* fix inspect-drawer spec
* fix panelEdit_base spec
* fix select-focus spec
* Apply suggestions from code review
Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>
* add be.visible assertion to new-query-variable spec to avoid flakiness
* increase waits in new-query-variable spec to avoid flakiness
* increase waits in new-query-variable spec by another 500
* remove be.visible assertion added before
* Chore: trying to fix flakiness
* skip the new-variable-query e2e test
* Chore: refactor so we might avoid flakiness
* Revert "skip the new-variable-query e2e test"
This reverts commit 203c1875c2.
Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>
Co-authored-by: Hugo Häggmark <hugo.haggmark@gmail.com>
(cherry picked from commit b8dd50c297)
Co-authored-by: Vicky Lee <36230812+vickyyyyyyy@users.noreply.github.com>
* Measure transformation number and elapsed time
* Change histogram to summary
* Apply suggestions from code review
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
(cherry picked from commit 2f394a219b)
Co-authored-by: Sofia Papagiannaki <papagian@users.noreply.github.com>
* transform state to what the api expects
* add expr prop to dataquery
* Add evalutate field
* add refid picker to options
* minor fix to enable save
* fix import
* more fixes after merge
* use default datasource if not changed
* replace name with title
* Change name in ui as well
* remove not used loadDataSources function
* prettier fixes
* look up datasource
* correct datasource per query model
* revert dataquery change, use expressionid const
* fix for type
* fix faulty const
* description readonly
(cherry picked from commit 529f564bd4)
Co-authored-by: Peter Holmberg <peterholmberg@users.noreply.github.com>
* CDN: Initial poc support for serving assets over a CDN
* Minor fix
* added build path and test
* fix lint error
* Added edition to cdn path
* Move master builds to a separate path
* Added error handling for the url parsing, changed setting name, and added docs
* Updated sample.ini
* Some property renames
* updated
* Minor update to html
* index template improvements
* Update docs/sources/administration/configuration.md
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
* Update docs/sources/administration/configuration.md
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
* Added ContentDeliveryPrefix to Licence service
* updated docs
* Updated test mock
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
(cherry picked from commit c04bc805b5)
Co-authored-by: Torkel Ödegaard <torkel@grafana.org>
* Switch deprecared toggle group for radio buttons
* Create transparent version of field, label and witch
* Replace divs wiith components
* Move styling from scss to js
* Update buttons
* Remove log generating file
* Update level button
(cherry picked from commit 56fb04e94c)
Co-authored-by: Ivana Huckova <30407135+ivanahuckova@users.noreply.github.com>
This will make sure that any map keys in JSON is ordered in /api/ds/query response.
(cherry picked from commit f62eb28f3e)
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
* Use uid in dashboard picker
* Set both id and uid from picker
* Use debounce-promise
* Simplify logic
* Use exact package versions
(cherry picked from commit e36b035c05)
Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
* PanelLibrary: changes casing of responses and adds meta property
* Chore: updates comments
* Chore: updates after PR comments
* Chore: changes casing of orgId
(cherry picked from commit 0a8eae2c12)
Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>
* If error - catch and show, if no logs - return null
* Refactor LogsContainer to use ConnectedProps
* Fix typescript error
* Remove no logs check
* Include review feedback
* Add SplitOpen type to createSpanLink and TraceView
(cherry picked from commit 347343f583)
* Docs: Refer to product docs in whats new for alerting templating feature
* move link below image
* remove whitespace
(cherry picked from commit bdf00d3a59)
Co-authored-by: Will Browne <wbrowne@users.noreply.github.com>
* Variables: Fixes display value for variables with regex
* Chore: adds a test for getAllMatches
(cherry picked from commit b5d7f1e7d8)
Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>
* Variables: Fixes so queries work for numbers values too
* Chore: refactor after PR comments
(cherry picked from commit fad81e1696)
Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>
* Admin: Fixes so form values are filled in from backend
* Chore: tidy up the imports
(cherry picked from commit a8056e2c9d)
Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>
* use more correct description of feature
* reference variable templating
* add word
(cherry picked from commit ad7d75c14d)
Co-authored-by: Will Browne <wbrowne@users.noreply.github.com>
* Cloud Monitoring: Fix legend naming with display name override
* include MQL queries
* cover all bases
* refactor
(cherry picked from commit 7562c6749d)
Co-authored-by: Will Browne <wbrowne@users.noreply.github.com>
* Decimals: Nukes scaledDecimals from the earth it was an abomination
* Moved move tests
* Fixed test
* Updated tests
* Updated test
(cherry picked from commit 6bdc9fac45)
Co-authored-by: Torkel Ödegaard <torkel@grafana.org>
* Modal: Admin: Fixes so whole org drop down is visible
* Tests: fixes failing tests
* Chore: cleans up the return type
* Chore: changes after PR comments
* Chore: changes after PR comments
(cherry picked from commit ffd39933d4)
Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>
* Graph: Fixes so only users with edit permissions can add annotations
* Tests: corrects test message text
* Chore: changes after PR comments
(cherry picked from commit e1243e07ca)
Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>
* PanelOptions: Refactoring on applying panel and field options from PanelModel
* Progress
* Filtering out props
* downgraded prettier
* Fixes
* Initial simple remember and restore for custom and overrides
* clearing custom options and overrides and restoring works
* actually use the function
* Added type for options cache
* minor fix
* Updated with new prettier
* Added old field config to panel type change handler
* Update public/app/features/dashboard/state/getPanelOptionsWithDefaults.test.ts
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
(cherry picked from commit 15033d0011)
Co-authored-by: Torkel Ödegaard <torkel@grafana.org>
* update go-mssqldb package
* mssql: support for Windows integrated security
Adds a dropdown to the config page to choose between
SQL Server auth and Windows auth. If the login/username
is empty then the go-mssqldb driver will use single sign on
(Windows integrated security) if on Windows.
* mssql: update ds - don't ignore the user column
* Expressions: remove feature toggle, add experimental badge
* Make button only show for backend and mixed data sources
Co-authored-by: Peter Holmberg <peter.hlmbrg@gmail.com>
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
* Go program to output openapi
* Fix number type syntax
Resolves error: 'unsupported op for number &'
* Render just the schemas
* Use args as entrypoints and add test
* Update README, tidy go.mod
* Enforce unique alert definition title/uid per org
* Remove print statement from test
* Do not allow empty alert definition titles
* update error message on dup title
* also add title error to update
* CamelCase json properties
* Add test for title unique enforcement in updates
Co-authored-by: kyle <kyle@grafana.com>
* Auth: add error for expired token
* Auth: save token error into context data
* Auth: send full user and req context to CreateToken
* Auth: add token ID in context
* add TokenExpiredError struct
* update auth tests
* remove most of the changes to CreateToken func
* clean up
* Login: add requestURI in CreateToken ctx
* update RequestURIKey comment
* Add GraphView component
* Add service map panel
* Add more metadata visuals
* Add context menu on click
* Add context menu for services
* Fix service map in dashboard
* Add field proxy in explore linkSupplier
* Refactor the link creation
* Remove test file
* Fix scale change when view is panned
* Fix node centering
* Don't show context menu if no links
* Fix service map containers
* Add collapsible around the service map
* Fix stats computation
* Remove debug log
* Fix time stats
* Allow string timestamp
* Make panning bounded
* Add zooming by mouse wheel
* Clean up the colors
* Fix stats for single trace graph
* Don't show debug config
* Add more complex layout
* Update layout with better fixing of the root nodes
* Code cleanup
* Change how we pass in link creation function and some more cleanup
* Refactor the panel section into separate render methods
* Make the edge hover more readable
* Move stats computation to data source
* Put edge labels to front
* Simplify layout for better multi graph layout
* Update for dark theme
* Move function to utils
* Visual improvements
* Improve context menu detail
* Allow custom details
* Rename to NodeGraph
* Remove unused dependencies
* Use named color palette and add some fallbacks for missing data
* Add test data scenario
* Rename plugin
* Switch scroll zoom direction to align with google maps
* Do some perf optimisations and rise the node limit
* Update alert styling
* Rename function
* Add tests
* Add more tests
* Change data frame column mapping to use column names
* Fix test
* Fix type errors
* Don't show context menu without links
* Add beta status to panel
* Fix tests
* Changed function to standard methods
* Fix typing
* Clean up yarn.lock
* Add some UI improvements
- better styling of the zoom buttons
- disable buttons when max reached
* Fix panel references after rename
* Add panel icon
* Safely skipping overrides on missing properties.
* Added test and missing element key.
* added possibility to remove the missing property.
* Minor UI change
* Fix test
* simplify a bit
* Fixed test
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
* Fix query preview add tabs to options
* break out tabs to components
* add refresh button
* minor things after PR review
* hide queries
* Add simple error screen if there's an error
* dropdown with different frames
* move onrunqueries to redux
* cleanup
* show actual error
* refactor(dashboard): remove redundant directive code from SaveDashboardAsButton
* feat(dashboard): initial commit of rendering version history with react
* feat(dashboard): append versions, use historySrv, UI as functional components
* feat(dashboard): initial commit of versions settings diff view
* refactor(historylist): remove code related to listing versions
* refactor(dashboard): use angular directive to render version comparison
* refactor(dashboard): clean up versions settings
* refactor(dashboard): move version history UI components into own files
* refactor(dashboard): update typings for version history react components
* feat(dashboard): initial commit of react revert dashboard modal
* test(dashboardsettings): clean up historylistctrl tests
* chore(dashboardsettings): remove unused state variable
* test(dashboardsettings): initial commit of VersionSettings component tests
* feat(grafana-ui): add className concatenation on Checkbox label
* Apply suggestions from code review
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
* test(dashboardsettings): add more tests for Versions Settings react component
* test(dashboardsettings): add test to assert latest badge in Version history table
* fix(dashboardsettings): pass string to getDiff instead of react event object
* test(dashboardsettings): remove failing test from versions settings
* Moved scroll area to content, and fixed colors
* Update public/app/features/dashboard/components/DashboardSettings/VersionsSettings.test.tsx
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
* style(dashboardsettings): add new lines to versions settings tests
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
* ToolbarButton: New emotion based component to replace all navbar, DashNavButton and scss styles
* Component ready for use
* Dam dam dam
* Starting big button design update
* Tried to use main button component but failed
* Minor fix
* Updates
* Updated
* Update packages/grafana-ui/src/components/Button/Button.tsx
Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
* Update packages/grafana-ui/src/components/Button/ButtonGroup.tsx
Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
* Updated to use spacing base
* Button updates
* Removd unused import
* Remove unused import
* Use correct theme variable for border-radius
Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
Replace hard-coded `GF_ENTERPRISE_LICENSE_TEXT` with a
`map[string]string` to allow the licensing service to allow sending any
environment variable through to the plugins for licensing purposes.
* cloud monitoring mql support
* reduce nesting
* remove resource type from deep link since. its removed for two reasons. first of all it is not needed for the link to work. secondly, by adding the resource type, the the link will differ from the query in grafana which I think is misleading
* use frame.meta.executedQueryString instead of legacy meta
Co-authored-by: Erik Sundell <erik.sundell87@gmail.com>
* Pass skipCache from context
* Use macaron Params instead of ParamsEscape for UIDs
* Modify queries and transform to get datasource UIDs
* Update github.com/grafana/grafana-plugin-sdk-go to v0.83.0
* Fix typos
* Query exemplars API
* Add link to traceID
* Update exemplar to show more information
Reduce exemplars density
* Fix typos
* Query exemplars API
* Add link to traceID
* Update exemplar to show more information
Reduce exemplars density
* Update GraphNG legend type
* Show new graph component in Explore
* Add exemplar annotation a design update
* Graph panel not to show red line annotation
Exemplar plugin to use y value
* Address review comments
* Density filter for exemplars
* Update schema of exemplars
* Density filter with y-value sampling
* Enforce axis scales to include 0
* Changes after merge with master
* Show metrics when there is no result
* Decorators tests fix
* ExemplarMarker to receive component prop
* Remove context menu from explore graph
* Add color to graph
* Update explore graph panel
* Update graph config to use default values
* Fix data source tests
* Do not show exemplars outside of graph
* Add exemplars switch
* Fix typos
* Add exemplars query only when enabled
* Show graph in explore without filling it
* Update exemplars plugin y value scale selection
* Update tests
* Add data source picker for internal linking
* Increase pointSize for better visibility
* Fix explore e2e test
* Fix data link title variable interpolation
* Use new switch component in PromExemplarField
* Move FieldLink component to new file
* Convert exemplar to datalink
* Add legend toggling logic to Explore
* Add legend toggling to Explore
* Address Ivana's feedback
* Address Andrej's comments
* Address Gio's feedback
* Add tests for result_transformer
* Fix eslint issues
* Change sampler formula for better readability
Co-authored-by: David Kaltschmidt <david@leia.lan>
Co-authored-by: David Kaltschmidt <david@leia.fritz.box>
Co-authored-by: David Kaltschmidt <david.kaltschmidt@gmail.com>
* Chore: moves common and response into separate packages
* Chore: moves common and response into separate packages
* Update pkg/api/utils/common.go
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* Chore: changes after PR comments
* Chore: move wrap to routing package
* Chore: move functions in common to response package
* Chore: move functions in common to response package
* Chore: formats imports
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* feat(tablepanel): add migration button to old table panel config
* feat(tablepanel): migrate old table transformations
* feat(tablepanel): migrate old styles to config overrides
* feat(tablepanel): migrate catch all style override to panel defaults
* refactor(tablepanel): clean up typings
* refactor(tablepanel): base threshold as -Infinity
* feat(tablepanel): migrate align to new table config overrides
* feat(tablepanel): migrate links to new table overrides
* refactor(tabelpanel): clean up threshold migrations
* feat(tablepanel): introduce table transform to merge
* feat(tablepanel): add note informing user to manually update links with cell values
Adds support to the terms aggregation for ordering by percentiles and extended stats.
Closes#5148
Co-authored-by: Giordano Ricci <grdnricci@gmail.com>
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
* StatsPickerEditor - add more config to the options ui
* Show calcs in the legend
* Refactor the way legend items are created
* Progress on refresh
* Migration update
* Use human-readable names in the legend stats
* Disable pointer cursor in table header
* ReleaseNotes: Updated changelog and release notes for 7.3.7
* Changelog: set everything as bug fixes
Co-authored-by: Agnès Toulet <agnes.toulet@gmail.com>
* Convert Cloud Monitoring (Stackdriver) Datasource to use Dataframes #29830
* add deeplink into config
* omggggggggggggggg this deeplink works!
* move unit to the backend part
* remove unit from frontend
* only set the config fields[1] for deeplink and unit
* refactory + fix some test
* remove frontend test for unit
* adding backend test for unit mapping
* resolve review
* rewrtie unit logic to do exactly the same as frontend filter
* refactory
The current backend code doesn't honor the minimum interval set in the UI for alerts using
the Elasticsearch data source. This means that the data the alerts are triggering against
will never match the data in the visualization if auto is used in the date histogram as interval.
This fixes the problem to make sure that date histogram auto interval is set according to
min interval set in UI for the query or fallback to data source min interval setting.
Fixes#22082
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
* Auth: Add Content-Type to SigV4 header allowlist
* add MT headers to permitted headers
* add Kibana API header to allowlist
* add Content-Length header to allow list
* Update prometheus.md
* Update docs/sources/datasources/prometheus.md
Co-authored-by: Dan Cech <dcech@grafana.com>
* Update prometheus.md
Co-authored-by: Dan Cech <dcech@grafana.com>
Example `ec2_instance_attribute(default, InstanceId, { 'tag:Environment': ['production'] });` will cause `SyntaxError: Unexpected token ' in JSON at position 2`
* get meta data from dataframe meta
* gmdMeta is not used anymore
* wip: move deep link creation to backend
* Refactor backend. Remove not used front end code
* Unit test deep links. Remove not used frontend tests
* remove reference to gmdmeta
* fix goimports error
* fixed after pr feedback
* more changes according to pr feedback
* fix lint issue
* fix bad math expression check and fix bad test
* Decrease nesting
* put link on first data field only
* Legends: Refactoring and rewrites of legend components to simplify components & reuse
* Removed onSeriesAxisToggle
* More removal of onSeriesAxisToggle and storybook improvements
* Added story with legend values
* Move table legend styles from inline to defined in stylesFactory
* Update styles
* Change to circle
* Updated style to fat line
* Rename to VizLegend
* More renamed and fixes / polish
* Removed imports
* Minor change
* Updates
* Updates
* Added 2 image links.
* Fixed a typo
* Fixed one more typo
* Added images to the "Share a panel" and "Share a dashboard" topics.
* Updated title of the section on panel embed.
* Update docs/sources/sharing/share-dashboard.md
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
* Fixed numbering.
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
* WIP, works but need to do more testing
* Update solution
* Fix autocomplete with metrics
* Update public/app/plugins/datasource/prometheus/language_provider.ts
* Update public/app/plugins/datasource/prometheus/language_provider.ts
* Change test for new functionality
* Elasticsearch: Add support for serial diff pipeline aggregation
* Removing settings transsforms
* Removing unused deps
* removing unused dep
* Fixing type in test
* Adding backend support for serial_diff
* Change API to expect UIDs instead of ID
* Remove unnecessary transactions
When only one query is executed
* Modify API responses
* Cleanup tests
* Use globally orgID and UID for identifying alert definitions
* Failed to load application files message improvement IE11
Improvement of the error message with information about the end of support of Internet Explorer 11.
* Update public/views/index-template.html
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
Usage Stats: Calculate concurrent users as a histogram
Metric will help to understand if users are sharing their credentials or using one account for concurrent sessions. This will help to make more informed decisions when enforcing any license limitations on credentials usage.
* fall back to any architecture when getting plugin's checksum
* Update pkg/cmd/grafana-cli/commands/install_command.go
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* remove typo
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* use sha256 checksum instead of md5
* Chore: Rewrite ldap login test to standard library (#29998)
* Chore: Rewrite ldap login test to standard library
* Preserve original ldap enabled setting after test
* Chore: Rewrite models alert test to standard library (#30021)
* Chore: Rewrite models dashboard acl test to standard library (#30022)
* Chore: Rewrite models dashboards test to standard library (#30023)
* Chore: Rewrite login auth test to standard library (#29985)
* Chore: Rewrite login auth test to standard library
* Use assert.Empty when empty string expected
* Chore: Rewrite brute force login protection test to standard library (#29986)
* Update pkg/cmd/grafana-cli/services/api_client.go
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* Update pkg/cmd/grafana-cli/services/api_client.go
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* use sha256 checksum instead of md5
* Update pkg/cmd/grafana-cli/services/api_client.go
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* Update pkg/cmd/grafana-cli/services/api_client.go
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* grafana-cli: Remove MD5
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
Co-authored-by: Emil Hessman <emil@hessman.se>
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* SQLStore: customise the limit of retrieved datasources per organisation
* update all suggestions regarding nil or 0 as default
* Apply suggestions from code review
Co-authored-by: Emil Tullstedt <emil.tullstedt@grafana.com>
* correct default.ini description + adding unittest
* Apply suggestions from code review
Co-authored-by: Sofia Papagiannaki <papagian@users.noreply.github.com>
* modify unittest name
Co-authored-by: Emil Tullstedt <emil.tullstedt@grafana.com>
Co-authored-by: Sofia Papagiannaki <papagian@users.noreply.github.com>
* Add fake TeamSyncService
* Change SyncTeams dispatch to direct method call
* Remove SyncTeamsCommand struct
* Move TeamSyncService to a separate package
* Remove context from SyncTeams args
* Add comments to teamsyncgroup package
Co-authored-by: Emil Tullstedt <emil.tullstedt@grafana.com>
* Replace TeamSyncService with TeamSyncFunc
* Remove unnecessary error check
* Add a test
* Fix test input
Co-authored-by: Emil Tullstedt <emil.tullstedt@grafana.com>
* PanelEvents: Isolate angular events from panel model events, use new Event patterns
* Removing some events that are not longer needed
* Updated DashboardModel
* Update
* Review fixes
* PanelLibrary: Adds get to the API
* Refactor: adds tests for get and getAll and cleans up other tests
* Refactor: changed name on DTO
* Update pkg/services/librarypanels/api.go
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* Update pkg/services/librarypanels/database.go
* Dashboard: Started migrating dashboard settings
* Restore general settings from angular
* Use react permissions component
* feat(dashboard): add react LinksSettings wrapper for dash-links-editor
* feat(dashboard): add react VersionsSettings wrapper for gf-dashboard-history
* refactor(dashboard): replace DashboardPermissions connectWithStore with connect
* chore(dashboard): folderInfo as undefined
* feat(dashboard): initial commit of dashboard settings json editor
* feat(dashboard): introduce save json functionality
* chore(dashboard): delete obsolete imports
* feat(dashboard): add save and save as buttons to settings nav
* feat(dashboard): add react wrapper for annotations settings
* chore(dashboard): put back canDelete for general settings delete button
* Make editable
* Remove makeEditable from SettingsCtrl
* feat(dashboard): show json editor save button if canSave
* refactor(dashboard): move hasUnsavedFolderChange to dashboard.meta
* feat(dashboard): render hasUnsavedFolderChange view in permissions settings
* feat(dashboard): reset hasUnsavedFolderChange on settingg save success
* feat(dashboard): refresh route on sucessful settings save
* test(dashboard): update snapshots
* refactor(dashboard): automatically infer connected props for dashboard permissions
* refactor(dashboard): give dashboard versions checkboxes some padding
* Update public/app/types/folders.ts
Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>
Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>
Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>
* Always use cache: stop passing skipCache among ngalert functions
* Add updated column
* Scheduler initial draft
* Add retry on failure
* Allow settting/updating alert definition interval
Set default interval if no interval is provided during alert definition creation.
Keep existing alert definition interval if no interval is provided during alert definition update.
* Parameterise alerting.Ticker to run on custom interval
* Allow updating alert definition interval without having to provide the queries and expressions
* Add schedule tests
* Use xorm tags for having initialisms with consistent case in Go
* Add ability to pause/unpause the scheduler
* Add alert definition versioning
* Optimise scheduler to fetch alert definition only when it's necessary
* Change MySQL data column to mediumtext
* Delete alert definition versions
* Increase default scheduler interval to 10 seconds
* Fix setting OrgID on updates
* Add validation for alert definition name length
* Recreate tables
* Elasticsearch: use time range from queries or default one
* Fix tests
* Fix language provider tests
* Elasticsearch: remove timeSrv dependency for logs context (#29841)
* Elasticsearch: remove timeSrv dependency for logs context
* Add tests & slighlty improve getIndexList
Co-authored-by: Elfo404 <gio.ricci@grafana.com>
It's not possible to stop an image, you can only start/stop container. I know it's just a little mistake and it sounds a bit like crumb cracker but your description is not correct.
Adding an interface type for usage stats service allows us to not depend on the implementation outside of the package, for example when testing we can easily mock the service
* Chore: Remove internal import for QueryEditorRow
* WIP inline forms fixes
* Added segment group component
* Added component status doc tag
* Chore: add as prop to InlineLabel to control rendered element (#29876)
* Use div for InlineLabel & fix iconbuttons positioning
Co-authored-by: Elfo404 <gio.ricci@grafana.com>
The change allows to add external, additional metrics which will be reported with the rest of hardcoded metrics, allowing to add metrics without a need to change the service itself.
* Increase folder name size in search dashboard
* Use new fontsize in dashboard list panel as well
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
* Remove unnecessary deduplication
* Remove dedup test as we are not doing dedup on all logs anymore
* Create unique ids in Loki
* Fix comment
* Fix comment
* Store prev response uids in usedUids
* Revert "Store prev response uids in usedUids"
This reverts commit 05c496e2a8.
* Add comment
* Fix using of newlines in detected fields
* Wrapping depends on main selection
* Update props to be optional
* Add missing wrapLogMessage prop to test
* ContextMenuPlugin WIP
* Remove Add annotations menu item from graph context menu
* ts ifx
* WIP
* Tests updates
* ts check fix
* Fix rebase
* Use replace function in angular graph data links
* Refactor Context menu and add Menu component to grafana/ui
* ContextMenuPlugin WIP
* Fix docs issues
* Remove Add annotations menu item from graph context menu
* ts ifx
* Sliders: Update behavior and style tweak
* More style tweaks, and changed new graph opacity option from 0 - 1 to 1 to 100
* Updated point size max
* Fixed hooks useCallback dependency issue
* Update test
* create page and sidebar entry
* add components for query editor and definition
* split pane things
* add reducer and action
* implement split pane and update ui actions
* making things pretty
* Unify toolbar
* minor tweak to title prefix and some padding
* can create definitions
* fix default state
* add notificaion channel
* add wrappers to get correct spacing between panes
* include or exclude description
* implement query editor
* start on query result component
* update from master
* some cleanup and remove expressions touch ups
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
* Remove feature flag
* Add data source setting for Jaeger
* Refactor trace to logs settings
* Fix tests
* Get ds settings in two steps
* Add info to settings
* Update docs for trace to logs
* Update yarn.lock
* Apply suggestions from code review
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
* Update TraceToLogsSettings after merge with master
* Add config for tags
* Add tags to check for keys
* Apply suggestions from code review
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
* Update docs
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
* DataSourceSettings: Add servername field to DataSource TLS config
A DNS lookup URL can be provided in the DataSource URL field in order
to dynamically load balance between multiple instances of a DataSource.
When using mutual TLS, Golang's TLS config implementation checks that
the certificate's common name (< 1.15) or subject alternative name
(>= 1.15) has the same value as the domain being accessed. If the DNS
entry is dynamically generated for a specific environment, the
certificate cannot be generated with a name matching the dynamic
DNS URL. As such, Golang offers a servername field that can be set to
overwrite what value is used when checking against the certificate's
common name (or subject alternative name). Without this change, Skip
TLS Verify must be set to true in order for the DataSource to work,
removing some of the benefits gained by using mutual TLS.
This commit adds the ability to set Grafana's internal Golang TLS config
servername field from the UI or a provisioned DataSource.
The servername field is optional and the existing behavior is retained if
the field is not set.
Co-authored-by: Dana Pruitt <dpruitt@vmware.com>
Co-authored-by: Jeremy Alvis <jalvis@pivotal.io>
* Update docs with PR review changes
Co-authored-by: Jeremy Alvis <jalvis@pivotal.io>
Co-authored-by: Dana Pruitt <dpruitt@vmware.com>
* Update with additional PR requested changes
* Minor updates based on PR change requests
Co-authored-by: Dana Pruitt <dpruitt@vmware.com>
* Elasticsearch: View in context feature for logs
* Fixing unused type
* Limit show context to esVersion > 5
* Fixing scope for showContextToggle; removing console.log
* Fix typing; adding check for lineField
* Update test to reflect new sorting keys for logs
* Removing sort from metadata fields
* Adding comment for clarity
* Fixing scenerio where the data is missing
* remove export & use optional chaining
Co-authored-by: Elfo404 <gio.ricci@grafana.com>
* cater for empty labels and new DisplayNameFromDS field
* simplify
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* increase priority for ds display name
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* Expr: fix failure to execute due to OrgID
Get orgID from the plugin context, which makes more sense anyways.
makes expressions work again after https://github.com/grafana/grafana/pull/29449 changes.
* Do not save organisation on its alert query model
Co-authored-by: Sofia Papagiannaki <sofia@grafana.com>
* match time range
* less logging
* almost working
* more logging
* more logging
* fix snapshot
* Use layout effect for the time range ref update
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
* Starting moving more stuff into data source picker
* WIP progress
* Progress on datasource picker rethink
* Things are working now some details to figure out
* Removed commented part
* Complex work on getting data source lists
* Fixed variable support showing correct data sources
* Tried fixing dashboard import but failed
* Fixes
* Fixed import dashboard
* Fixed unit test
* Fixed explore test
* Fixed test
* Fix
* fixed more tests
* fixed more tests
* fixed showing which option is default in picker
* Changed query variable to use data source picker, updated tests and e2e
* Fixed more tests
* Updated snapshots, had wrong typescript version
* [#29569]: Added creation of missing directory
For image [ubuntu] : /etc/grafana/provisioning/plugins was missing in image creation.
* [#29569]: Added creation of missing directory
For image [alpine] : /etc/grafana/provisioning/plugins was missing in image creation.
* initial impl of Bars, Staircase, Smooth modes
* fix fillTo for staircase and smooth paths
* fix pointSize
* [bars] adjust gap factor & reduce bar width to include stroke width. remove rounding to favor gap & width uniformity over edge crispness.
* remove line path fallback for too-dense data
* "Auto" points mode implies "Never" for Bars
* slightly reduce x axis tick density
* fix bars height calc, make bars crisp again.
* [bars] don't use hard-coded 'x' scale key
* refactor catmullRomFitting() to accept x & y coord arrays. restrict to processing only visible data range.
* move path building functions to own file
* export typed functions
Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
* Rewrite auth proxy tests to use standard lib
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
* Auth proxy: Use standard error type
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
* feat: hide snapshots menu item from viewers
* feat(playlists): prevent viewers from creating/editing playlists
* feat: prevent viewers seeing playlist nav link if no playlists
* refactor(playlist): rename isViewer property to canEditPlaylists
* revert(playlists): put back note if viewer and no playlists
* refactor(snapshots): consider admin/editor permission in folders/dashboards for displaying menu item
* feat(snapshots): only show snapshot nav item if user is signed in
* fix(snapshots): revert snapshots to previous state if delete snapshot api error
* Removing PanelModel usage from query rows
* More work removing dependency on panel model
* Before big change to query options
* Query options now have no dependency on panel model
* Test page is working
* Shared query now works again
* Rename component
* fix after merge
* Fixed issue with old angular editors
* Add test coverage for uPlot initialization and data updates
* fix ts
* WIP
* I see some light in the tunel
* Tests update
* Fix rendering before hooks are evaluated
* Chore: Enable eslint react/no-render-return-value rule
Eanble the rule and remove the unused render return
part of: #29201
* Chore: Enable eslint react/no-children-prop rule
Not linting issues after turning on this. No other file changes requried
part of: #29201
* Chore: Enable eslint react/no-unknown-property rule
Correct enable-background to enableBackground
part of: #29201
* Chore: Enable eslint react/no-unescaped-entities rule
Replaced " with " replaced ' with '
part of: #29201
* WIP Add line limit and query type switch toLoki dashboard editor
* Refactor, reuse code for both - Explore and Dashboard
* Üpdate snapshot tests
* Refactor and unify
* Rename test file
* Update test
* DataLinks: Removes getDataSourceSettingsByUid from applyFieldOverrides and data linking code
* Fixed test
* Fixed a few tests
* Fixed unit tests
* Removed old getDataSourceSettingsByUid from interface, still there for runtime backward compatability
* Chore: Enable eslint react/display-name
Enable react/display-name and fixed the corresponding linting issue
part of: #29201
* Chore: Enable eslint react/no-deprecated
Enable react/no-deprecated and add the UNSAFE_ prefix for deprected methods
part of: #29201
* Chore: Enable eslint react/no-find-dom-node
Enable react/no-find-dom-node rule and use ref instead
part of: #29201
* Test: Update TeamGroupSync test snapshot
Since we added the displayName for ToolTip compontent and tag name is changed.
* Fix: Fixed ClickOutsideWrapper render
The props.children might contains numbers of nodes which make cloneElement failed. Change to simply use a div to wrapper
the children and assign the ref to div for this feature
* Style: Use shorthand method definition style for inline component
* Fix: Rebase master and fix linting
Rebase from master branch and fix new displayName linting warning
* Grunt: Removes grunt dependency and replaces some of it usage with alternatives
* Removed precommit toolkit task
* Fixed toolkit import
* Some cleanup of unused / not working stuff in build.go
* Removed sass errors
* Adding FilterByValue transformer skeleton
* Connecting options with Editor
* Improving UI and making deep copy of options on change.
* Improving Transformation Editor UI
* Implementing Regex filtering
* Adding valueFilters.ts and creating filter registry
* Connecting the test function
* Correcting TypeScript errors
* Using FilterInstance instead of simple Filter test function
* Adding field.type as filter options
* Improving UI. Adding custom placeholder depending on filter.
* Implementing a few more filter types
* Implementing more filters
* Return original data if no filter were processed
* Improving UI
* Correcting TS errors
* Making sure inequality transform are invalid until the filterExpression is not empty
* Cleanup in the UI file
* Improving UI (highlight invalid fields)
* Only show filterType that are supported for the selected field
* Adding tests + correction of a filter
* Adding transformer test
* Adding doc
* Cleanup
* Typing props for FilterSelectorRow component
Co-authored-by: Marcus Andersson <systemvetaren@gmail.com>
* Moving rendering in the JSX
Co-authored-by: Marcus Andersson <systemvetaren@gmail.com>
* Memoizing filterTypeOptions computation
Co-authored-by: Marcus Andersson <systemvetaren@gmail.com>
* Improve code compactness
Co-authored-by: Marcus Andersson <systemvetaren@gmail.com>
* Cleanup + solving TS errors
* Updating some labels
* Wrapping stuff around useMemo and useCallback
* Using cloneDeep from lodash
* Don't highlight field name input if null
* Removing time type fields in selectable options
* We want loose equality in this scenario.
* Adding `onChange` to useCallback dependencies
Co-authored-by: Marcus Andersson <systemvetaren@gmail.com>
* Include or exclude matching any or all conditions
* Correcting field name matching
* Cleanup
* Don't highlight the filterExpression input when its empty
* Adding Range filter
* Updating doc
* Correcting TS error
* Only showing the Match All/Match Any option if more than one condition
* Two inputs for the Range filter instead of one
* Improving invalid highlight for Range filter type
* Cleanup
* Improving labels in UI
* Using ButtonSelect to improve UI
* editor UI updates.
* Updating tests
* Adding component for Regex
* Improve TS typing
* Adding components for the other filter types.
* Cleanup
* Correct error
* Updating valueFilter.test.ts
* Updating filterByValue.test.ts
* Reverting and removing Range filter
* Update docs/sources/panels/transformations.md
* starting to implement poc.
* added a small poc.
* wip
* added tests.
* added structure for dynamic value matcher editors.
* added more support.
* added some more value matchers.
* removed unused value filters.
* added some more matchers.
* adding more matchers.
* added a range matcher.
* fixing some tests.
* fixing tests.
* remove unused dep.
* making the matching a bit more performant.
* UX improvements and alignment fixes
* fixed delete button.
* fixed some spacing in the UI.
* added docs for matchers.
* adding docs and exposing value matcher types.
* will store dateTime as string.
* updated docs according to feedback.
* moved filter by value in transformation list.
* Improved description.
* added regex value filter.
* added support for regex.
* fixing failing tests.
Co-authored-by: Marcus Andersson <systemvetaren@gmail.com>
Co-authored-by: Marcus Andersson <marcus.andersson@grafana.com>
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
* Add support for Sensu Go notification channel
Similar to current support for the older "Core" version of
Sensu, this commit add support for the newer version.
Closes#19908
Signed-off-by: Todd Campbell <todd@sensu.io>
* fix linter errors
Signed-off-by: Todd Campbell <todd@sensu.io>
* Apply suggestions from code review
PR review suggestions
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* Fix no new variables error
* Replace convey testing with testify
Signed-off-by: Todd Campbell <todd@sensu.io>
* Wording suggestions
Signed-off-by: Todd Campbell <todd@sensu.io>
* Add docker compose environment for testing/maintenance
Signed-off-by: Todd Campbell <todd@sensu.io>
* Renamed and fixed docker-compose.yaml to work in devenv
Signed-off-by: Todd Campbell <todd@sensu.io>
* Change sensugo web UI port to 3080 so as not to conflict with grafana
Signed-off-by: Todd Campbell <todd@sensu.io>
* Apply suggestions from code review
Set the API key as a secure value.
Co-authored-by: Sofia Papagiannaki <papagian@users.noreply.github.com>
* Add Sensu Go information to notifications doc
Signed-off-by: Todd Campbell <todd@sensu.io>
* Update pkg/services/alerting/notifiers/sensugo.go
Co-authored-by: Sofia Papagiannaki <papagian@users.noreply.github.com>
* change assert to require for Error/NoError tests
Signed-off-by: Todd Campbell <todd@sensu.io>
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
Co-authored-by: Sofia Papagiannaki <papagian@users.noreply.github.com>
* Moving query stuff out of dashboard folder
* Moved more stuff
* Moving more stuff
* Update
* WIP test page
* Minor change
* Before big changes
* Fixed test
* Refactoring some events to new events
* More refactoring
* Make panel editor subscribe to new event
* Minor change and comment added
* Updated snapshot
* move split pane logic to its own component
* fix update function typing
* destruct updateuistate
* updates after review
* reword the rightpane to work for text panel
Lead all top-level properties that we do not intend to export with an
underscore.
In 2.2.0, only definitions starting with a capital letter were exported.
As well, properties with a leading underscore were not visible to an
entire package - just within the same file. 3.0.0 still considers them
hidden, however, they are now visible to an entire package.
* Add an option to hide certain users in the UI
* revert changes for admin users routes
* fix sqlstore function name
* Improve slice management
Co-authored-by: Emil Tullstedt <emil.tullstedt@grafana.com>
* Hidden users: convert slice to map
* filter with user logins instead of IDs
* put HiddenUsers in Cfg struct
* hide hidden users from dashboards/folders permissions list
* Update conf/defaults.ini
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
* fix params order
* fix tests
* fix dashboard/folder update with hidden user
* add team tests
* add dashboard and folder permissions tests
* fixes after merge
* fix tests
* API: add test for org users endpoints
* update hidden users management for dashboard / folder permissions
* improve dashboard / folder permissions tests
* fixes after merge
* Guardian: add hidden acl tests
* API: add team members tests
* fix team sql syntax for postgres
* api tests update
* fix linter error
* fix tests errors after merge
Co-authored-by: Emil Tullstedt <emil.tullstedt@grafana.com>
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
Co-authored-by: Leonard Gram <leo@xlson.com>
* Wip
* feat: get storybook and app building locally
* docs: comment webpack react alias
* build(grafana-ui): put back ts-loader
* build: prefer storybook essentials over actions and docs. bump dark-mode
* chore(storybook): migrate to latest config
* build: prevent test env throwing Invalid hook call errors
* chore: lodash resolves to package dependency rather than project
* use decorators as variable instead of function
* perf(storybook): reduce bundling time by splitting type check and compilation
* refactor(storybook): use sortOrder.order param to sort intro story first
* build: use yarn workspace command
* refactor(storybook): use previous knobs addon registration
* migrate button story to controls
* build(storybook): silence warnings in console
* build: bump storybook related ts packages
* style: remove trailing whitespace
* refactor(graphng): export interface for storybook
* controls migration guide
* fix typo
* docs(storybook): default docs to use dark theme as per current implementation
* revert(grafana-ui): put back react-is namedExport
this was changed for react 17 bump but causes rollup to fail during bundling
* chore: bump storybook to 6.1, enable fastRefresh, silence eslint prop-types
* docs(grafana-ui): move knobs -> controls migration guide to storybook style-guide
* chore(storybook): silence terminal warning about order of docs addon
* Update contribute/style-guides/storybook.md
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
* Apply documentation suggestions
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
* chore(storybook): bump to 6.1.2
Co-authored-by: Peter Holmberg <peter.hlmbrg@gmail.com>
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
* Add loadtest which authenticates with API key
- Edit load tests to assign the orgId in the default function, as the setup function is only called once for all VUs and therefore the change is not persisted to each VU.
- Remove side effect from orgId setup function and explicitly set orgId in setup client
* sort semicolons, whitespace
* When comparing field config, shallowly compare custom config
* Refactoring plot init and data update (WIP)
* GraphNG: Fixed points mode
* Fixed min & max from frame config
* Fixed axis left / right auto logic
* Minor tweak to cursor color
* Fixed time axis now that uPlot deals in milliseconds as well
* fixed ts issue
* Updated test
* Fixed axis placement logic again
* Added new unit test for axis placement logic
* Removed unused props
* Fixed zoom issue due to uPlot time resolution change
* Add back millisecond time tick support
* Comment out GraphNG test
* Fixed being able to switch legend on/off
* Updated unit tests
* GraphNG: Fixed hiding axis
* Frame comparison: allow skipping properties
* Update y-axis ranges without reinitializing uPlot
* update snap
* GraphNG: Fixed axis label placement and spacing issues
* update snaps
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
* fixing so changes to annotations query links will update submenu.
* Refactored so we dont use the events to trigger a refresh but instead recreating the annotations list instead of mutating the existing list.
* updated snapshot.
* uppdates according to feedback.
* fixed so it also works to update a annotation.
* Refactor: Adds getNextAvailableId
* Refactor: Hides DependencyGraph button if there are no dependencies
* Refactor: Changes the new button
* Refactor: Removes usages of NEW_VARIABLE_ID
* Refactor: Reverts the new button
* Updated index topic, removed "what-is-grafana", and adjusted weight of few other topics. Also, updated the left menu.
* Updated title to "Getting started".
* Added alias /docs/grafana/latest/guides/what-is-grafana to _index.md file
* comes from grafana/gel-app
* remove transform plugin code
* move __expr__ and -100 constants to expr pkg
* set OrgID on request plugin context
* use gtime for resample duration
* in resample, rename "rule" to "window", use gtime for duration, parse duration before exec
* remove gel entry from plugins-bundled/external.json
which creates an empty array for plugins
* Tests: Adds expects for observables
* Refactor: renames matcher
* Chore: changed jest version and removed as dev dependency
* Refactor: Changes after PR review
* wip
* Chore: revert
* Chore: Adds jest-matcher-utils
* Chore: fixed merge error
* Tests: Removed inline snapshots as they are env dependent
* Tests: missed a snapshot
* Refactor: Removed type file after PR comments
* fixing so we dont run multiple dashboard links searches when changing variables.
* changed so we fetch the list when open the dashboard links dropdown.
* removed verification of unneccesary requests.
The annotation_tag and alert_rule_tag tables did not have
PRIMARY KEY defined what cause problems with migration to
MariaDB with Galera setup with
innodb_force_primary_key=1
Or MySQL > 8.0.13 with
sql_require_primary_key=ON
Which can manifest as follows:
MariaDB
Error 1173: This table type requires a primary key
MySQL
ERROR 3750 (HY000): Unable to create or change a table
without a primary key, when the system variable 'sql_require_primary_key' is set.
Extra reading for curious:
https://jfg-mysql.blogspot.com/2017/08/danger-no-pk-with-RBR-and-mariadb-protection.htmlFixes#12971
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
* Docs: Fixes what'new menu and creates index page, adds first draft of release notes to docs
* Minor tweaks
* Fixed missing letter
* Updates
* Updated
Co-authored-by: Drone <drone@grafana.com>
* remove unused function to interpolate URLs
* share function to add headers between ds/plugin proxies
* stop performing unnecessary plugin setting lookup
* fix bug causing runtime errors when using complex templated URLs
* lower case util functions not used outside of pluginproxy package
* change test URL to a (valid) dummy URL to make intent clearer
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* Alerting NG: prototype v2 (WIP)
* Separate eval package
* Modify eval alert definition endpoint
* Disable migration if ngalert is not enabled
* Remove premature test
* Fix lint issues
* Delete obsolete struct
* Apply suggestions from code review
* Update pkg/services/ngalert/ngalert.go
Co-authored-by: Kyle Brandt <kyle@grafana.com>
* Add API endpoint for listing alert definitions
* Introduce index for alert_definition table
* make ds object for expression to avoid panic
* wrap error
* Update pkg/services/ngalert/eval/eval.go
* Swith to backend.DataQuery
* Export TransformWrapper callback
* Fix lint issues
* Update pkg/services/ngalert/ngalert.go
Co-authored-by: Kyle Brandt <kyle@grafana.com>
* Validate alert definitions before storing them
* Introduce AlertQuery
* Add test
* Add QueryType in AlertQuery
* Accept only float64 (seconds) durations
* Apply suggestions from code review
* Get rid of bus
* Do not export symbols
* Fix failing test
* Fix failure due to service initialization order
Introduce MediumHigh service priority and assign it to backendplugin
service
* Fix test
* Apply suggestions from code review
* Fix renamed reference
Co-authored-by: Kyle Brandt <kyle@grafana.com>
* Elasticsearch: Add Moving Function Pipeline Aggregation
* Removing support for moving average in 7.x
* Fixing getMetricAggTypes to handle undefined esVersion
* Adding moving_fn to go code
* Update public/app/plugins/datasource/elasticsearch/metric_agg.ts
Co-authored-by: Giordano Ricci <grdnricci@gmail.com>
* Adding test for esversion 70
* Removing default value for script, adding placeholder instead
* Fixing formatting
* Adding code for handling missing or obsolete aggregations
Co-authored-by: Giordano Ricci <grdnricci@gmail.com>
* refactor(dashboard): remove usage of legacyform components in sharemodal
* refactor(dashboard): replace legacyform components
* refactor(dashboard): remove ng-if and correct typo in content of sharesnapshot
* feat(grafana-ui): set displayName prop for Switch component
* refactor(dashboard): migrate TimePickerSettings legacyform components
* refactor(queryoptions): migrate switch and input to nextgen components
* refactor(sharesnapshot): prefer InlineFieldRow over gf-form-group
* refactor(shareembed): styling fixes
* refactor(timepickersettings): prefer double bang over nullish coalescing operator
* fix(grafana-ui): switch uses id prop if passed in
* feat: connect labels and switches with ids
* docs(devenv): introduce troubleshooting section about mac osx and logs
* docs(devenv): tidy troubleshooting
* docs(devenv): move troubleshooting headers up a level and expand on error messge
* TraceViewer: Make sure it does not break when no trace is passed
- exit trace conversion early when there is no trace data
- added test to cover missing trace for trace viewer
* Review feedback
* Use RTL for new test
* Exit early if trace or traceID is not there
* Backend: Adds route for well-known change password URL
* Include 'dashboard/new' in backend routes
* Move index route handler registration out of "not logged in views" section
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* Graph refactorings
* Move legend to GraphNG and use new VizLayout
* Things are working
* remove unused things
* Update
* Fixed ng test dashboard
* Update
* More refactoring
* Removed plugin
* Upgrade uplot
* Auto size axis
* Axis scaling
* Fixed tests
* updated
* minor simplification
* Fixed selection color
* Fixed story
* Minor story fix
* Improve x-axis formatting
* Tweaks
* Update
* Updated
* Updates to handle timezone
* Updated
* Fixing types
* Update
* Fixed type
* Updated
* Chore: use jest without grunt
* Run no-focus-convey-tests and no-only-tests as well
* Update lib.star test-backend script with no-focus test to run first
* Lets see a failing test
* Revert "Lets see a failing test"
This reverts commit cb6c6ed67d.
* Update no-focus-convey test to a script
* Update scripts/lib.star
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* Update drone.yml
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* Split main reducer from item reducer
* Move query related redux to separate file
* Split more parts and tests
* Fix import
* Remove unused code
* Update public/app/features/explore/state/datasource.ts
Co-authored-by: Zoltán Bedi <zoltan.bedi@gmail.com>
* Add section comments
* Rename ExploreItem to ExplorePane
* Fix imports
Co-authored-by: Zoltán Bedi <zoltan.bedi@gmail.com>
* FieldColor: Per panel settings to filter out supported modes
* Updates
* Updated solution
* Update panel plugin API for standard options support
* Update FieldColorConfigSettings interface
* Change color mode correctly when changing plugin type
* Render only applicable color modes in field color config editor
* Apply field config API changes
* TS fixes
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
* Add Datetime local (No date if today) option
* Add more tests
* Revert to using function for local dateTime format
This is required as Intl api used to convert date to local format is not present in
node environments
* Dashboard: Add named capture groups to variable query regex
Variable query regex are able to use 'text' and 'value' named capture
groups to allow for separate display text to be extracted from the
query result. e.g.
Using a regex of /foo="(?<text>[^"]+)|bar="(?<value>[^"]+)/g on a query
result of metric{foo="FOO", bar="BAR"} would result in the variable
value being set to 'BAR' but display text being set to 'FOO'
Resolves#21076
* Improve regex capture group documentation
* Update docs/sources/variables/filter-variables-with-regex.md
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
* Apply suggestions from code review
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
* Apply suggestions from code review
Co-authored-by: Hugo Häggmark <hugo.haggmark@gmail.com>
* Use text capture if value capture does not match
This is to keep the behaviour consistent with the current behavior. See
discussion https://github.com/grafana/grafana/pull/28625/files#r516490942
* Improve regex field placeholder and tooltip message
To make the feature more discoverable to users the place holder example
now includes the named capture groups. The tool tip message also
includes a reference and link to the documentation.
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
Co-authored-by: Hugo Häggmark <hugo.haggmark@gmail.com>
* feat: added NGINX example for using websockets to Loki
* chore: corrections after review
* chore: more correrctions from review
* chore: creview corrections
* chore: addressed review comment by @achatterjee-grafana
* Cloudwatch: Fix issue with reducer transform not working properly with Cloudwatch data
* Updated go sdk and updated code
* CloudWatch: Improve test
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* Provisioning: Fixed problem with getting started panel being added to custom home dashboard
* Fixed comment
* Update pkg/api/dashboard.go
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* Removed auto-capitalization from the login form
On mobile browsers, by default most keyboards will auto capitalize the first letter of the email/username, which is case sensitive.
This PR fixes that.
* Fixed autoCapitalize react keyword
* Build: changing docs dev-environment
I have added a new image that will include the auto-generated frontend docs so you don't have to generate those locally prior to running the doc container. This has a dependency on this PR: https://github.com/grafana/website/pull/2744 and that we publish a version of the `grafana/docs-devenv` image.
* will ignore everything (even symbolic links)
* fixed spelling.
* added newline.
* updated image name.
* Fix logSeriesToLogsModel when some data frames have empty fields
* Update test
* Update public/app/core/logs_model.ts
Co-authored-by: Zoltán Bedi <zoltan.bedi@gmail.com>
Co-authored-by: Zoltán Bedi <zoltan.bedi@gmail.com>
* Add info about CSV download for Excel in What's new article
* Update docs/sources/whatsnew/whats-new-in-v7-3.md
* Update docs/sources/whatsnew/whats-new-in-v7-3.md
* Add test for SoloPanelPage.tsx
* Fix navigation from one SoloPanelPage to another one
The panel did not update because it assumed that the dashboard was already
fully loaded.
Adds a couple upgrade notes for v7.3 regarding database migrations for
user invites and snapshots.
Co-authored-by: Will Browne <wbrowne@users.noreply.github.com>
* use percentage on topPanel, limit resize
* add relative size to rightPanel, resize split panes on resize
* lock min size of options pane to min 300px, adding debounce
* sorting imports
* assigning the ref, remove debounce
* set default uistate to number instead of string
* revert go.sum and go.mod
* fix go.mod
* feat(grafana-ui): autofocus threshold editor input
* refactor(grafana-ui): remove commented out css
* feat(grafana-ui): use ref for autofocus new thresholds editor input
* refactor(grafana-ui): conditionally set input ref for latest threshold
* refactor(grafana-ui): put back createRef for input ref
Adds support for the Forward OAuth Identity feature in backend data source plugins.
Earlier this feature has only been supported for non-backend data source plugins.
Fixes#26023
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
* Docs: what's new in enterprise 7.3
* feedback
* feedback
* Update docs/sources/whatsnew/whats-new-in-v7-3.md
Co-authored-by: Emil Tullstedt <emil.tullstedt@grafana.com>
* link to auditing
Co-authored-by: Emil Tullstedt <emil.tullstedt@grafana.com>
#24999 changed the error response payload, but the test data source
was not adapted to this change and broke the feature of displaying
any errors to the user in the UI. This change should resolve this
problem.
Ref #24999
Ref #28481
If anonymous access is enabled for an org and there are multiple
orgs. When requesting a page that requires user to be logged in
and orgId query string is set in the request url to an org not
equal the anonymous org, if the user is not logged in should
be redirected to the login page.
Fixes#26120
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
Co-authored-by: Sofia Papagiannaki <papagian@users.noreply.github.com>
* Updated Getting Started topic, based on feedback from Diana and Daniel. Added 2 entries to Glassry.
* Added new topic Getting Started with Grafana and Prometheus
* Corrected image path. A couple of other minor changes.
* Updated image link based on Marcus's suggestion.
* Updated topics based on feedback.
* Update docs/sources/getting-started/getting-started.md
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
* Update docs/sources/getting-started/getting-started.md
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
* Added Diana's latest changes.
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
* Explore: parse time range fix
* Remove commented out code
* Fix cases for string epoch and ISO strings
Co-authored-by: Andrej Ocenas <mr.ocenas@gmail.com>
* improve reduce transformer
* add measurment classes
* sync with new grafana measure format
* use address for live
* use plural in URL
* set the field name
* fix build
* find changes
* POST http to channel
* Yarn: Update lock file (#28014)
* Loki: Run instant query only in Explore (#27974)
* Run instant query only in Explore
* Replace forEach with for loop
* don't cast
* Docs: Fixed row display in table (#28031)
* Plugins: Let descendant plugins inherit their root's signature (#27970)
* plugins: Let descendant plugins inherit their root's signature
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
* Registry: Fix service shutdown mode trigger location (#28025)
* Add Alex Khomenko as member (#28032)
* show history
* fix confirm
* fix confirm
* add tests
* fix lint
* add more errors
* set values
* remove unrelated changes
* unrelated changes
* Update pkg/models/live.go
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* Update pkg/models/live.go
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* Update pkg/services/live/live.go
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* Update pkg/services/live/pluginHandler.go
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* Update pkg/services/live/pluginHandler.go
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* Update pkg/services/live/pluginHandler.go
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* use measurments for testdata endpoints
* add live to testdata
* add live to testdata
* Update pkg/services/live/channel.go
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* Apply suggestions from code review
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* update comment formats
* uprevert testdata
* Apply suggestions from code review
Co-authored-by: Will Browne <wbrowne@users.noreply.github.com>
Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>
* Apply suggestions from code review
* CloudWatch: Add EC2CapacityReservations Namespace (#28309)
* API: Fix short URLs (#28300)
* API: Fix short URLs
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
* Chore: Add cloud-middleware as code owners (#28310)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
* SQLStore: Run tests as integration tests (#28265)
* sqlstore: Run tests as integration tests
* Truncate database instead of re-creating it on each test
* Fix test description
See https://github.com/grafana/grafana/pull/12129
* Fix lint issues
* Fix postgres dialect after review suggestion
* Rename and document functions after review suggestion
* Add periods
* Fix auto-increment value for mysql dialect
Co-authored-by: Emil Tullstedt <emil.tullstedt@grafana.com>
* Drone: Fix grafana-mixin linting (#28308)
* Drone: Fix Starlark script
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
* grafana-mixin: Move build logic to scripts
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
* Drone: Use mixin scripts
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
* CI build image: Install jsonnetfmt and mixtool
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
* Makefile: Print commands
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
* should only ignore the file in the grafana mixin root folder (#28306)
Signed-off-by: bergquist <carl.bergquist@gmail.com>
* fix: for graph size not taking up full height or width
* Graph NG: fix toggling queries and extract Graph component from graph3 panel (#28290)
* Fix issue when data and config is not in sync
* Extract GraphNG component from graph panel and add some tests coverage
* Update packages/grafana-ui/src/components/uPlot/hooks.test.ts
* Update packages/grafana-ui/src/components/uPlot/hooks.test.ts
* Update packages/grafana-ui/src/components/uPlot/hooks.test.ts
* Fix grid color and annotations refresh
* Drone: Use ${DRONE_TAG} in release pipelines, since it should work (#28299)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
* Explore: respect min_refresh_interval (#27988)
* Explore: respect min_refresh_interval
Fixes#27494
* fixup! Explore: respect min_refresh_interval
* fixup! Explore: respect min_refresh_interval
* UI: export defaultIntervals from refresh picker
* fixup! Explore: respect min_refresh_interval
Co-authored-by: Zoltán Bedi <zoltan.bedi@gmail.com>
* Loki: Base maxDataPoints limits on query type (#28298)
* Base maxLines and maxDataPoints based on query type
* Allow overriding the limit to higher value
* Bump tree-kill from 1.2.1 to 1.2.2 (#27405)
Bumps [tree-kill](https://github.com/pkrumins/node-tree-kill) from 1.2.1 to 1.2.2.
- [Release notes](https://github.com/pkrumins/node-tree-kill/releases)
- [Commits](https://github.com/pkrumins/node-tree-kill/compare/v1.2.1...v1.2.2)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Bump handlebars from 4.4.3 to 4.7.6 (#27416)
Bumps [handlebars](https://github.com/wycats/handlebars.js) from 4.4.3 to 4.7.6.
- [Release notes](https://github.com/wycats/handlebars.js/releases)
- [Changelog](https://github.com/handlebars-lang/handlebars.js/blob/master/release-notes.md)
- [Commits](https://github.com/wycats/handlebars.js/compare/v4.4.3...v4.7.6)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Build(deps): Bump http-proxy from 1.18.0 to 1.18.1 (#27507)
Bumps [http-proxy](https://github.com/http-party/node-http-proxy) from 1.18.0 to 1.18.1.
- [Release notes](https://github.com/http-party/node-http-proxy/releases)
- [Changelog](https://github.com/http-party/node-http-proxy/blob/master/CHANGELOG.md)
- [Commits](https://github.com/http-party/node-http-proxy/compare/1.18.0...1.18.1)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Automation: Add backport github action (#28318)
* BackendSrv: Fixes queue countdown when unsubscribe is before response (#28323)
* GraphNG: Use AxisSide enum (#28320)
* IssueTriage: Needs more info automation and messages (#28137)
* IssueTriage: Needs more info automation and messages
* Updated
* Updated
* Updated wording
* SAML: IdP-initiated SSO docs (#28280)
* SAML: IdP-initiated SSO docs
* Update docs/sources/enterprise/saml.md
Co-authored-by: Emil Tullstedt <emil.tullstedt@grafana.com>
* Apply suggestions from code review
Co-authored-by: Emil Tullstedt <emil.tullstedt@grafana.com>
Co-authored-by: Emil Tullstedt <emil.tullstedt@grafana.com>
* Loki: Run instant query only when doing metric query (#28325)
* Run instant query only when doing metric query
* Update public/app/plugins/datasource/loki/datasource.ts
Co-authored-by: Ivana Huckova <30407135+ivanahuckova@users.noreply.github.com>
Co-authored-by: Ivana Huckova <30407135+ivanahuckova@users.noreply.github.com>
* Automation: Tweaks to more info message (#28332)
* AlertingNG: remove warn/crit from eval prototype (#28334)
and misc cleanup
* area/grafana/toolkit: update e2e docker image (#28335)
* add xvfb to image
* comment out toolkit inclusion
* add latest tag
* update packages for cypress
* cleanup script
* Update auth-proxy.md (#28339)
Fix a minor grammar mistake: 'handling' to 'handle'.
* Git: Create .gitattributes for windows line endings (#28340)
With this set, Windows users will have text files converted from Windows style line endings (\r\n) to Unix style line endings (\n) when they’re added to the repository.
https://www.edwardthomson.com/blog/git_for_windows_line_endings.html
* Docs: Add docs for valuepicker (#28327)
* Templating: Replace all '$tag' in tag values query (#28343)
* Docs: Add missing records from grafana-ui 7.2.1 CHANGELOG (#28302)
* Dashboard links: Places drop down list so it's always visible (#28330)
* calculating whether to place the list on the right or left edge of the parent
* change naming and add import of createRef
* Automation: Update backport github action trigger (#28352)
It seems like GitHub has solved the problem of running github actions on PRs from forks with access to secrets.
https://github.blog/2020-08-03-github-actions-improvements-for-fork-and-pull-request-workflows/#improvements-for-public-repository-forks
If I change the event that triggers it to pull_request_target the action is run in the context of the base instead of the merged PR branch
* ColorSchemes: Adds more color schemes and text colors that depend on the background (#28305)
* Adding more color modes and text colors that depend on the background color
* Updates
* Updated
* Another big value fix
* Fixing unit tests
* Updated
* Updated test
* Update
* Updated
* Updated
* Updated
* Updated
* Added new demo dashboard
* Updated
* updated
* Updated
* Updateed
* added beta notice
* Fixed e2e test
* Fix typos
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
* revert pseduo code
* apply feedback
* remove HTTP for now
* fix backend test
* change to datasource
* clear input for streams
* fix docs?
* consistent measure vs measurements
* better jsdocs
* fix a few jsdoc errors
* fix comment style
* Remove commented out code
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
* Clean up code
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
* Clean up code
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
* Clean up code
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
* Clean up code
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
* Clean up code
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
* Clean up code
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
* Clean up code
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
* Update pkg/models/live.go
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* Fix build
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
* set the stringField
Co-authored-by: Torkel Ödegaard <torkel@grafana.org>
Co-authored-by: Ivana Huckova <30407135+ivanahuckova@users.noreply.github.com>
Co-authored-by: ozhuang <ozhuang.95@gmail.com>
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
Co-authored-by: Amos Law <ahlaw.dev@gmail.com>
Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
Co-authored-by: Will Browne <wbrowne@users.noreply.github.com>
Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>
Co-authored-by: The Rock Guy <fabian.bracco@gvcgroup.com.au>
Co-authored-by: Sofia Papagiannaki <papagian@users.noreply.github.com>
Co-authored-by: Emil Tullstedt <emil.tullstedt@grafana.com>
Co-authored-by: Carl Bergquist <carl@grafana.com>
Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
Co-authored-by: Elliot Pryde <elliot.pryde@elliotpryde.com>
Co-authored-by: Zoltán Bedi <zoltan.bedi@gmail.com>
Co-authored-by: Andrej Ocenas <mr.ocenas@gmail.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Alexander Zobnin <alexanderzobnin@gmail.com>
Co-authored-by: Kyle Brandt <kyle@grafana.com>
Co-authored-by: Brian Gann <briangann@users.noreply.github.com>
Co-authored-by: J-F-Far <joel.f.farthing@gmail.com>
Co-authored-by: acoder77 <73009264+acoder77@users.noreply.github.com>
Co-authored-by: Peter Holmberg <peterholmberg@users.noreply.github.com>
Co-authored-by: Krzysztof Dąbrowski <krzysdabro@live.com>
Co-authored-by: maknik <mooniczkam@gmail.com>
* adding cache and making sure we don't fail build if no changes have been made.
* fixed indentation.
* changed so we use the shared repo for the sync action.
* Alerting: Return proper status code when trying to create an Alert Notification where the name or UID already exists.
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
* Adding more color modes and text colors that depend on the background color
* Updates
* Updated
* Another big value fix
* Fixing unit tests
* Updated
* Updated test
* Update
* Updated
* Updated
* Updated
* Updated
* Added new demo dashboard
* Updated
* updated
* Updated
* Updateed
* added beta notice
* Fixed e2e test
* Fix issue when data and config is not in sync
* Extract GraphNG component from graph panel and add some tests coverage
* Update packages/grafana-ui/src/components/uPlot/hooks.test.ts
* Update packages/grafana-ui/src/components/uPlot/hooks.test.ts
* Update packages/grafana-ui/src/components/uPlot/hooks.test.ts
* Fix grid color and annotations refresh
* sqlstore: Run tests as integration tests
* Truncate database instead of re-creating it on each test
* Fix test description
See https://github.com/grafana/grafana/pull/12129
* Fix lint issues
* Fix postgres dialect after review suggestion
* Rename and document functions after review suggestion
* Add periods
* Fix auto-increment value for mysql dialect
Co-authored-by: Emil Tullstedt <emil.tullstedt@grafana.com>
The bot is configured via [commands.json](https://github.com/grafana/grafana/blob/master/.github/commands.json) and some other GitHub workflows [workflows](https://github.com/grafana/grafana/tree/master/.github/workflows).
Comment commands:
* Write the word `/duplicate #<number>` anywhere in a comment and the bot will add the correct label and standard message.
* Write the word `/needsMoreInfo` anywhere in a comment and the bot will add the correct label and standard message.
Label commands:
* Add label `bot/question` the the bot will close with standard question message and add label `type/question`
* Add label `bot/duplicate` the the bot will close with standard duplicate message and add label `type/duplicate`
* Add label `bot/needs more info` for bot to request more info (or use comment command mentioned above)
* Add label `bot/close feature request` for bot to close a feature request with standard message and adds label `not implemented`
* Add label `bot/no new info` for bot to close an issue where we asked for more info but has not received any updates in at least 14 days.
## Metrics
Metrics are configured in [metrics-collector.json](https://github.com/grafana/grafana/blob/master/.github/metrics-collector.json) and are also defined in the
To automatically backport a PR to a release branch like v7.3.x add a label named `backport v7.3.x`. The label name should follow the pattern `backport <branch-name>`. Once merged grafanabot will automatically
try to cherry-pick the PR merge commit into that branch and open a PR. It will sync the milestone with the source PR so make sure the source PR also is assigned the milestone for the patch release. If the PR is already merged you can still add this label and trigger the backport automation.
If there are merge conflicts the bot will write a comment on the source PR saying the cherry-pick failed. In this case you have to do the cherry pick and backport PR manually.
The backport logic is written [here](https://github.com/grafana/grafana-github-actions/blob/main/backport/backport.ts)
"comment":"Please ask your question on [community.grafana.com/](https://community.grafana.com/). To avoid having your issue closed in the future, please read our [CONTRIBUTING](https://github.com/grafana/grafana/blob/master/CONTRIBUTING.md) guidelines.\n\nHappy graphing!"
},
@@ -14,14 +16,38 @@
},
{
"type":"label",
"name":"type/duplicate",
"name":"bot/duplicate",
"addLabel":"type/duplicate",
"removeLabel":"bot/duplicate",
"action":"close",
"comment":"Thanks for creating this issue! It looks like this has already been reported by another user. We’ve closed this in favor of the existing one. Please consider adding any details you think is missing to that issue.\n\nTo avoid having your issue closed in the future, please read our [CONTRIBUTING](https://github.com/grafana/grafana/blob/master/CONTRIBUTING.md) guidelines.\n\nHappy graphing!"
},
{
"type":"comment",
"name":"needsMoreInfo",
"allowUsers":[],
"action":"updateLabels",
"addLabel":"bot/needs more info"
},
{
"type":"label",
"name":"no new info",
"name":"bot/needs more info",
"action":"updateLabels",
"addLabel":"needs more info",
"removeLabel":"bot/needs more info",
"comment":"Thanks for creating this issue! We think it's missing some basic information. \r\n\r\nFollow the issue template and add additional information that will help us replicate the problem. \r\nFor data visualization issues: \r\n- Query results from the inspect drawer (data tab & query inspector)\r\n- Panel settings can be extracted in the panel inspect drawer JSON tab\r\n\r\nFor dashboard related issues: \r\n- Dashboard JSON can be found in the dashboard settings JSON model view\r\n\r\nFor authentication and alerting issues, Grafana server logs are useful. \r\n\r\nHappy graphing!"
},
{
"type":"label",
"name":"bot/no new info",
"action":"close",
"comment":"We've closed this issue since it needs more information and hasn't had any activity recently. We can re-open it after you you add more information. To avoid having your issue closed in the future, please read our [CONTRIBUTING](https://github.com/grafana/grafana/blob/master/CONTRIBUTING.md) guidelines.\n\nHappy graphing!"
},
{
"type":"label",
"name":"bot/close feature request",
"action":"close",
"addLabel":"not implemented",
"comment":"This feature request has been open for a long time with few received upvotes or comments, so we are closing it. We're trying to limit open GitHub issues in order to better track planned work and features. \r\n\r\nThis doesn't mean that we'll never ever implement it or that we will never accept a PR for it. A closed issue can still attract upvotes and act as a ticket to track feature demand\/interest. \r\n\r\nThank You to you for taking the time to create this issue!"
@@ -19,9 +19,20 @@ For more ways to contribute, check out the [Open Source Guides](https://opensour
### Report bugs
Before submitting a new issue, try to make sure someone hasn't already reported the problem. Look through the [existing issues](https://github.com/grafana/grafana/issues) for similar issues.
Report a bug by submitting a [bug report](https://github.com/grafana/grafana/issues/new?labels=type%3A+bug&template=1-bug_report.md). Make sure that you provide as much information as possible on how to reproduce the bug.
Before submitting a new issue, try to make sure someone hasn't already reported the problem. Look through the [existing issues](https://github.com/grafana/grafana/issues) for similar issues.
Follow the issue template and add additional information that will help us replicate the problem.
For data visualization issues:
- Query results from the inspect drawer (data tab & query inspector)
- Panel settings can be extracted in the panel inspect drawer JSON tab
For a dashboard related issues:
- Dashboard JSON can be found in the dashboard settings JSON model view
For authentication and alerting Grafana server logs are useful.
@@ -304,7 +304,9 @@ Even if you don't have the time or knowledge to investigate an issue we highly r
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.
* Add `bot/question` and the bot will close it with an appropriate message.
[Read more on bot actions](https://github.com/grafana/grafana/blob/master/.github/bot.md)
@@ -8,7 +8,7 @@ The open-source platform for monitoring and observability.
Grafana allows you to query, visualize, alert on and understand your metrics no matter where they are stored. Create, explore, and share dashboards with your team and foster a data driven culture:
- **Visualize:** Fast and flexible client side graphs with a multitude of options. Panel plugins for many different way to visualize metrics and logs.
- **Visualize:** Fast and flexible client side graphs with a multitude of options. Panel plugins offer many different ways to visualize metrics and logs.
- **Dynamic Dashboards:** Create dynamic & reusable dashboards with template variables that appear as dropdowns at the top of the dashboard.
- **Explore Metrics:** Explore your data through ad-hoc queries and dynamic drilldown. Split view and compare different time ranges, queries and data sources side by side.
- **Explore Logs:** Experience the magic of switching from metrics to logs with preserved label filters. Quickly search through all your logs or streaming them live.
@@ -36,8 +36,8 @@ If you're interested in contributing to the Grafana project:
## Get involved
- Follow [@grafana on Twitter](https://twitter.com/grafana/)
- Read and subscribe to the [Grafana blog](https://grafana.com/blog/)
- 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.
@@ -38,6 +38,12 @@ PRs MUST be [reviewed](https://help.github.com/en/github/collaborating-with-issu
Once a PR is approved as per above, any team member MAY merge the PR.
## Backporting a PR
PRs intended for inclusion in the next PATCH release they must be backported to the release branch. The bot can do this automatically. [Read more on backport PRs](https://github.com/grafana/grafana/blob/master/.github/bot.md). Both the source PR and the backport PR should be assigned to the patch release milestone, unless you are backporting to many releases then it can differ.
Backport PRs are also needed during the beta period to get fixes into the stable release.
# Release workflow
## Branch structure
@@ -61,8 +67,6 @@ Release branches MUST be split from the following branches.
Security releases follow the same process but MUST be prepared in secret. Security releases MUST NOT include changes which are not related to the security fix. Normal release processes MUST accommodate the security release process. SECURITY.md MUST be followed.
PRs intended for inclusion in the next PATCH release MUST be labeled with `cherry-pick-needed` so they can be picked up by automated release tooling.
# Path to the default home dashboard. If this value is empty, then Grafana uses StaticRootPath + "dashboards/home.json"
default_home_dashboard_path=
################################### Data sources #########################
[datasources]
# Upper limit of data sources that Grafana will return. This limit is a temporary configuration and it will be deprecated when pagination will be introduced on the list data sources API.
# The duration in time a user invitation remains valid before expiring. This setting should be expressed as a duration. Examples: 6h (hours), 2d (days), 1w (week). Default is 24h (24 hours). The minimum supported duration is 15m (15 minutes).
user_invite_max_lifetime_duration=24h
# Enter a comma-separated list of usernames to hide them in the Grafana UI. These users are shown to Grafana admins and to themselves.
hidden_users=
[auth]
# Login cookie name
login_cookie_name=grafana_session
@@ -442,6 +463,7 @@ scopes = user:email
email_attribute_name=email:primary
email_attribute_path=
login_attribute_path=
name_attribute_path=
role_attribute_path=
id_token_attribute_name=
auth_url=
@@ -478,7 +500,7 @@ enabled = false
config_file=/etc/grafana/ldap.toml
allow_sign_up=true
# LDAP backround sync (Enterprise only)
# LDAP background sync (Enterprise only)
# At 1 am every day
sync_cron="0 0 1 * * *"
active_sync_enabled=true
@@ -559,6 +581,25 @@ facility =
# Syslog tag. By default, the process' argv[0] is used.
tag=
[log.frontend]
# Should Sentry javascript agent be initialized
enabled=false
# Sentry DSN if you want to send events to Sentry.
sentry_dsn=
# Custom HTTP endpoint to send events captured by the Sentry agent to. Default will log the events to stdout.
custom_endpoint=/log
# Rate of events to be reported between 0 (none) and 1 (all), float
sample_rate=1.0
# Requests per second limit enforced per an extended period, for Grafana backend log ingestion endpoint (/log).
log_endpoint_requests_per_second_limit=3
# Max requests accepted per short interval of time for Grafana backend log ingestion endpoint (/log)
# Default timezone for user preferences. Options are 'browser' for the browser local timezone or a timezone name from IANA Time Zone database, e.g. 'UTC' or 'Europe/Amsterdam' etc.
default_timezone=browser
[expressions]
# Enable or disable the expressions functionality.
# You can configure the database connection by specifying type, host, name, user and password
@@ -110,6 +113,11 @@
# For "sqlite3" only. cache mode setting used for connecting to the database. (private, shared)
;cache_mode = private
################################### Data sources #########################
[datasources]
# Upper limit of data sources that Grafana will return. This limit is a temporary configuration and it will be deprecated when pagination will be introduced on the list data sources API.
;datasource_limit = 5000
#################################### Cache server #############################
[remote_cache]
# Either "redis", "memcached" or "database" default is "database"
@@ -160,6 +168,9 @@
# Change this option to false to disable reporting.
;reporting_enabled = true
# The name of the distributor of the Grafana instance. Ex hosted-grafana, grafana-labs
;reporting_distributor = grafana-labs
# Set to false to disable all checks to https://grafana.net
# for new versions (grafana itself and plugins), check is used
# in some UI views to notify that grafana or plugin update exists
@@ -228,6 +239,14 @@
# when they detect reflected cross-site scripting (XSS) attacks.
;x_xss_protection = true
# Enable adding the Content-Security-Policy header to your requests.
# CSP allows to control resources the user agent is allowed to load and helps prevent XSS attacks.
;content_security_policy = false
# Set Content Security Policy template used when adding the Content-Security-Policy header to your requests.
# The duration in time a user invitation remains valid before expiring. This setting should be expressed as a duration. Examples: 6h (hours), 2d (days), 1w (week). Default is 24h (24 hours). The minimum supported duration is 15m (15 minutes).
;user_invite_max_lifetime_duration = 24h
# Enter a comma-separated list of users login to hide them in the Grafana UI. These users are shown to Grafana admins and themselves.
# Default timezone for user preferences. Options are 'browser' for the browser local timezone or a timezone name from IANA Time Zone database, e.g. 'UTC' or 'Europe/Amsterdam' etc.
;default_timezone = browser
[expressions]
# Enable or disable the expressions functionality.
@@ -8,13 +8,13 @@ Grafana supports the [following databases](https://grafana.com/docs/installation
- [PostgreSQL](https://www.postgresql.org/)
- [SQLite3](https://www.sqlite.org/)
Grafana uses the [XORM](https://xorm.io) framework for persisting objects to the database. For more information on how to use XORM, refer to the [documentation](http://gobook.io/read/github.com/go-xorm/manual-en-US/).
Grafana uses the [XORM](https://xorm.io) framework for persisting objects to the database. For more information on how to use XORM, refer to the [documentation](https://gobook.io/read/gitea.com/xorm/manual-en-US/).
[Services](services.md) don't use XORM directly. Instead, services use the _SQL store_, a special type of service that provides an abstraction for the database layer. There are two ways of using the `sqlstore`: using `sqlstore` handlers, and using the `SqlStore` instance.
[Services](services.md) don't use XORM directly. Instead, services use the _SQL store_, a special type of service that provides an abstraction for the database layer. There are two ways of using the `sqlstore`: using `sqlstore` handlers, and using the `SQLStore` instance.
## `sqlstore` handlers
> **Deprecated:** We are deprecating `sqlstore` handlers in favor of using the `SqlStore` object directly in each service. Since most services still use the `sqlstore` handlers, we still want to explain how they work.
> **Deprecated:** We are deprecating `sqlstore` handlers in favor of using the `SQLStore` object directly in each service. Since most services still use the `sqlstore` handlers, we still want to explain how they work.
The `sqlstore` package allows you to register [command handlers](communication.md#handle-commands) that either store, or retrieve objects from the database. `sqlstore` handlers are similar to services:
Here, `inTransaction` is a helper function in the `sqlstore` package that provides a session, that lets you execute SQL statements.
## `SqlStore`
## `SQLStore`
As opposed to a `sqlstore` handler, the `SqlStore` is a service itself. The `SqlStore` has the same responsibility however: to store and retrieve objects, to and from the database.
As opposed to a `sqlstore` handler, the `SQLStore` is a service itself. The `SQLStore` has the same responsibility however: to store and retrieve objects, to and from the database.
To use the `SqlStore`, inject the `SQLStore` in your service struct:
To use the `SQLStore`, inject it in your service struct:
[BackendSrv](https://grafana.com/docs/grafana/latest/packages_api/runtime/backendsrv) handles all outgoing HTTP requests from Grafana. This document explains the high-level concepts used by `BackendSrv`.
## Canceling requests
This section describes how canceling requests work in Grafana. While data sources can implement their own cancellation concept, we recommend that you use the method we describe here.
A data request can take a long time to finish. During the time between when a request starts and finishes, the user can change context. For example, the user may navigate away or issue the same request again.
If we wait for canceled requests to complete, it might create unnecessary load on data sources.
Grafana uses a concept called _request cancelation_ to cancel any ongoing request that Grafana doesn't need.
#### Before Grafana 7.2
Before Grafana can cancel any data request, it has to identify that request. Grafana identifies a request using the property `requestId` [passed as options](https://github.com/grafana/grafana/blob/master/docs/sources/packages_api/runtime/backendsrvrequest.md) when you use [BackendSrv](https://grafana.com/docs/grafana/latest/packages_api/runtime/backendsrv).
The cancellation logic is as follows:
- When an ongoing request discovers that an additional request with the same `requestId` has started, then Grafana will cancel the ongoing request.
- When an ongoing request discovers that the special "cancel all requests" `requestId` was sent, then Grafana will cancel the ongoing request.
#### After Grafana 7.2
Grafana 7.2 introduced an additional way of canceling requests using [RxJs](https://github.com/ReactiveX/rxjs). To support the new cancellation functionality, the data source needs to use the new `fetch` function in [BackendSrv](https://grafana.com/docs/grafana/latest/packages_api/runtime/backendsrv).
Migrating the core data sources to the new `fetch` function [is an ongoing process that you can read about in this issue.](https://github.com/grafana/grafana/issues/27222)
## Request queue
Depending on how the web browser implements the protocol for HTTP 1.1, it will limit the number of parallel requests, lets call this limit _max_parallel_browser_request_.
Unless you have configured Grafana to use HTTP2, the browser limits parallel data requests according to the browser's implementation. For more information on how to enable HTTP2, refer to [Configuration](https://grafana.com/docs/grafana/latest/administration/configuration/#protocol).
Because there is a _max_parallel_browser_request_ limit, if some of the requests take a long time, they will block later requests and make interacting with Grafana very slow.
#### Before Grafana 7.2
Not supported.
#### After Grafana 7.2
Grafana uses a _request queue_ to process all incoming data requests in order while reserving a free "spot" for any requests to the Grafana API.
Since the first implementation of the request queue doesn't take into account what browser the user uses, the _request queue_ limit for parallel data source requests is hard-coded to 5.
> **Note:** Grafana instances [configured with HTTP2 ](https://grafana.com/docs/grafana/latest/administration/configuration/#protocol) will have a hard coded limit of 1000.
@@ -20,7 +20,7 @@ We recommend using [Homebrew](https://brew.sh/) for installing any missing depen
```
brew install git
brew install go
brew install node@12
brew install node@14
npm install -g yarn
```
@@ -76,7 +76,10 @@ When you log in for the first time, Grafana asks you to change your password.
#### Building on Windows
The Grafana backend includes Sqlite3 which requires GCC to compile. So in order to compile Grafana on Windows you need to install GCC. We recommend [TDM-GCC](http://tdm-gcc.tdragon.net/download).
The Grafana backend includes SQLite which requires GCC to compile. So in order to compile Grafana on Windows you need to install GCC. We recommend [TDM-GCC](http://tdm-gcc.tdragon.net/download). Eventually, if you use [Scoop](https://scoop.sh), you can install GCC through that.
You can simply build the back-end as follows: `go run build.go build`. The Grafana binaries will be in bin\\windows-amd64.
Alternately, if you wish to use the `make` command, install [Make for Windows](http://gnuwin32.sourceforge.net/packages/make.htm) and use it in a Unix shell (f.ex. Git Bash).
## Test Grafana
@@ -87,7 +90,7 @@ The test suite consists of three types of tests: _Frontend tests_, _backend test
We use [jest](https://jestjs.io/) for our frontend tests. Run them using Yarn:
```
yarn jest
yarn test
```
### Run backend tests
@@ -98,6 +101,13 @@ If you're developing for the backend, run the tests with the standard Go tool:
go test -v ./pkg/...
```
#### On Windows
Running the backend tests on Windows currently needs some tweaking, so use the build.go script:
```
go run build.go test
```
### Run end-to-end tests
The end to end tests in Grafana use [Cypress](https://www.cypress.io/) to run automated scripts in a headless Chromium browser. Read more about our [e2e framework](/contribute/style-guides/e2e.md).
@@ -39,3 +39,62 @@ Tests must use the standard library, `testing`. For assertions, prefer using [te
The majority of our tests uses [GoConvey](http://goconvey.co/) but that's something we want to avoid going forward.
In the `sqlstore` package we do database operations in tests and while some might say that's not suited for unit tests. We think they are fast enough and provide a lot of value.
### Assertions
Use respectively [`assert.*`](https://github.com/stretchr/testify#assert-package) functions to make assertions that
should _not_ halt the test ("soft checks") and [`require.*`](https://github.com/stretchr/testify#require-package)
functions to make assertions that _should_ halt the test ("hard checks"). Typically you want to use the latter type of
check to assert that errors have or have not happened, since continuing the test after such an assertion fails is
chaotic (the system under test will be in an undefined state) and you'll often have segfaults in practice.
### Sub-tests
Use [`t.Run`](https://golang.org/pkg/testing/#T.Run) to group sub-test cases, since it allows common setup and teardown
code, plus lets you run each test case in isolation when debugging. Don't use `t.Run` to e.g. group assertions.
### Cleanup
Use [`t.Cleanup`](https://golang.org/pkg/testing/#T.Cleanup) to clean up resources in tests. It's a less fragile choice than `defer`, since it's independent of which
function you call it in. It will always execute after the test is over in reverse call order (last `t.Cleanup` first, same as `defer`).
## Globals
As a general rule of thumb, avoid using global variables, since they make the code difficult to maintain and reason
about, and to write tests for. The Grafana codebase currently does use a lot of global variables, especially when
it comes to configuration, but that is a problem we're trying to solve.
## Pointers
In general, use value types and only reach for pointers when there's a real need. The reason being that pointers
increase the risk of bugs, since a pointer can be nil and dereferencing a nil pointer leads to a panic (AKA segfault).
Valid reasons to use a pointer include (but not necessarily limited to):
* You might need to pass a modifiable argument to a function
* Copying an object might incur a performance hit (benchmark to check your assumptions, copying is often faster than
allocating heap memory)
* You might *need*`nil` to tell if a variable isn't set, although usually it's better to use the type's zero
value to tell instead
## Database
In database related code, we follow certain patterns.
### Foreign keys
While they can be useful, we don't generally use foreign key constraints in Grafana, for historical and
technical reasons. See this [comment](https://github.com/grafana/grafana/issues/3269#issuecomment-383328548) by Torkel
for context.
### Unique columns
If a column, or column combination, should be unique, add a corresponding uniqueness constraint through a migration.
## JSON
The simplejson package is used a lot throughout the backend codebase, but it's legacy, so if at all possible
avoid using it in new code. Use [json-iterator](https://github.com/json-iterator/go) instead, which is a more performant
drop-in alternative to the standard [encoding/json](https://golang.org/pkg/encoding/json/) package. While encoding/json
is a fine choice, profiling shows that json-iterator may be 3-4 times more efficient for encoding. We haven't profiled
its parsing performance yet, but according to json-iterator's own benchmarks, it appears even more superior in this
@@ -51,12 +51,15 @@ The following sections provide general guidelines on topics specific to Grafana
### General
- Use active voice. Avoid passive voice.
-Passive: The heatmap visualization is displayed.
- Active: Grafana displays the heatmap visualization.
-Use active: Grafana displays the heatmap visualization.
- Avoid passive: The heatmap visualization is displayed.
- Write directly to the reader.
- Use: "After you create a dashboard, you can add a panel to it."
- Avoid: "After you create a dashboard, it is possible to add a panel to it."
- Write in the imperative second person. 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.
- Not: The panel will open.
- Do not use an ampersand (&) as an abbreviation for "and."
- **Exceptions:** If an ampersand is used in the Grafana UI, then match the UI.
- Avoid using internal slang and jargon in technical documentation.
@@ -69,19 +72,36 @@ The following sections provide general guidelines on topics specific to Grafana
- Files that are displayed in the help system should have names that are all lowercase, no spaces. Use hyphens instead of spaces. Example: glossary.md
- Documentation file names should match the title. **Note:** This only applies to new files at this time. Do not change the names of older files unless directed to do so.
- Internal reference file names should be all uppercase except the file extension. Example: CONTRIBUTING.md
- Image file names should be descriptive and unique. Also, add the software version number that the image applies to or the screenshot was taken in. Example: share-dashboard-link-7-3.png
### Headings
- Write headings in sentence case, not title case.
- This is sentence case
- This Is Title Case
- This is Title Case
- Task topic headings start with a verb.
- Write a query. Create a dashboard.
- Write a query
- Create a dashboard
- Concept and reference topic headings should be nouns or gerunds. Examples: Contributing to docs, Visualizations, Style guide
- Avoid following one heading with another heading.
#### Heading don'ts
- Avoid stacked headings, which is following one heading with another heading.
- Avoid skipping heading levels. For example, an h1 should be followed by an h2 rather than an h3.
- Avoid having just one lower-level heading. For example, h1, h2, h2, h3, h3, h2 is a good order. Do not go h1, h2, h3, h2, h3, h2.
-Don't include parenthetical words like (Important!) in headings.
- Avoid having just one lower-level heading. For example, h1, h2, h2, h3, h3, h2, h2 is a good order. Do not go h1, h2, h3, h2, h3, h2.
-Avoid using hyphens in headings.
- Do not include parenthetical words like (Important!) in headings.
#### Step-by-step headings
In most cases, headings should not be numbered steps.
However, sometimes we need to use headings as numbered steps. This is mostly in cases where each step is complex or a series of other procedures. For example, in [Getting started with Grafana and Prometheus](https://grafana.com/docs/grafana/latest/getting-started/getting-started-prometheus/).
If that is the case, then use the following format for headings:
##### Step 1. Install the software
##### Step 2. Run the software
### Images
@@ -91,12 +111,14 @@ The following sections provide general guidelines on topics specific to Grafana
- Assume all graphics will be exclusively viewed on the web.
- Maximum image size is 3840px X 2160px.
- Screenshots should be readable, but not too large.
- _Do not_ use image shortcodes. Follow the guidance in the [Grafana markdown guide](https://github.com/grafana/grafana/blob/master/contribute/style-guides/documentation-markdown-guide.md#images).
- Markdown image links are preferred. Only use the HTML image links if you need to style the image in ways unsupported in Markdown.
- When you name a file, follow the [file naming conventions](#file-naming-conventions). Example: image-name-7-3.png
### Capitalization
- Grafana, Loki, and Prometheus are always capitalized unless part of a code block.
- API names are always Title Case, followed by "API"—for example, "Dashboard Permissions API"
- Git is always capitalized, unless part of a code block.
- Abbreviations are always capitalized (such as API, HTTP, ID, JSON, SQL, or URL) unless they are part of a code block.
- Menu and submenu titles always use sentence case: capitalize the first word, and lowercase the rest.
- "Dashboards" when referring to the submenu title.
@@ -106,6 +128,22 @@ The following sections provide general guidelines on topics specific to Grafana
- Lowercase "dashboards" when referring to multiple dashboards.
- **Exceptions:** If a term is lowercased in the Grafana UI, then match the UI.
#### Git, GitHub
Git is always capitalized, unless part of a code block. GitHub is the correct spelling and capitalization.
#### Integrations
In general, "integration" is not capitalized. Only capitalize it if it is capitalized in the UI or part of a proper noun, like the name of a specific integration.
The first letter of the name of an integration is always capitalized, even if the original named source is lowercase.
**Examples:**
- MySQL Integration
- CockroachDB Integration
- Etcd Integration
- I installed an integration on my local Grafana.
### Links and references
When referencing another document, use "Refer to" rather than alternatives such as "See" or "Check out."
@@ -152,9 +190,8 @@ Warnings tell the user not to do something. For example:
- Do not assume everyone is using Linux. Make sure instructions include enough information for Windows and Mac users to successfully complete procedures.
- Do not add `$` before commands. Make it easy for users to copy and paste commands.
- **Wrong:** `$ sudo yum install grafana`
- **Right:** `sudo yum install grafana`
- **Wrong:** `$ sudo yum install grafana`
- Include `sudo` before commands that require `sudo` to work.
Grafana products has some words, abbreviations, and terms particular to the Grafana discourse community.
#### changelog
One word, not two.
**Example**
- Read the full changelog.
**Exception:**
- When referring to the file containing the official changelog, use the filename: `CHANGELOG.md`.
#### checkout, check out
Two words if used as a verb, one word if used as a noun.
@@ -185,7 +234,7 @@ Two words if used as a verb, one word if used as a noun.
#### data source
Two words, not one
Two words, not one.
**Exceptions:**
- "datasource" used as an identifier
@@ -213,6 +262,10 @@ Do not use. This is developer jargon that refers to a UI panel. Refer to the pan
One word, not two.
#### mixin
One word, not two. Also, not hyphenated.
#### open source, open-source
Do not hyphenate when used as an adjective unless the lack of hyphen would cause confusion. For example: _Open source software design is the most open open-source system I can imagine._
@@ -227,3 +280,15 @@ Two words if used as a verb, one word if used as a noun.
- Set up the workspace.
- Initial setup might take five minutes.
### node_exporter, windows_exporter
When referencing the Prometheus data source exporters, always use "node_exporter" and "windows_exporter" when referring to those tools.
**Correct:** node_exporter, windows_exporter
**Incorrect:** Node Exporter, node exporter, Windows Exporter, Windows exporter, windows exporter.
### MS SQL Server
Always use "MS SQL" when referring to MS SQL Server application.
Incorrect UI spellings will be corrected in a later version of Grafana.
It is possible to infer connected props automatically from `mapStateToProps` and `mapDispatchToProps` using a helper type `ConnectedProps` from Redux. For this to work the `connect` call has to be split into two parts.
@@ -64,13 +64,13 @@ To link a component’s stories with an MDX file you have to do this:
```jsx
// In TabsBar.story.tsx
import{TabsBar}from"./TabsBar";
import{TabsBar}from'./TabsBar';
// Import the MDX file
importmdxfrom"./TabsBar.mdx";
importmdxfrom'./TabsBar.mdx';
exportdefault{
title:"General/Tabs/TabsBar",
title:'General/Tabs/TabsBar',
component:TabsBar,
parameters:{
docs:{
@@ -93,8 +93,8 @@ There are some things that the MDX file should contain:
```jsx
// In MyComponent.mdx
import{Props}from"@storybook/addon-docs/blocks";
import{MyComponent}from"./MyComponent";
import{Props}from'@storybook/addon-docs/blocks';
import{MyComponent}from'./MyComponent';
<Propsof={MyComponent}/>;
```
@@ -141,39 +141,66 @@ interface MyProps {
}
```
### Knobs
### Controls
Knobs is an [addon to Storybook](https://github.com/storybookjs/storybook/tree/master/addons/knobs) which can be used to easily switch values in the UI. A good use case for it is to try different props for the component. Using knobs is easy. Grafana is set up so knobs can be used straight out of the box. Here is an example of how you might use it.
The [controls addon](https://storybook.js.org/docs/react/essentials/controls) provides a way to interact with a component's properties dynamically and requires much less code than knobs. We're deprecating knobs in favor of using controls.
```jsx
// In MyComponent.story.tsx
#### Migrating a story from Knobs to Controls
import{number,text}from"@storybook/addon-knobs";
As a test, we migrated the [button story](https://github.com/grafana/grafana/blob/master/packages/grafana-ui/src/components/Button/Button.story.tsx). Here's the guide on how to migrate a story to controls.
exportconstbasicStory=()=>(
<MyComponent
max={number("Max value",10)}
min={number("Min value",-10)}
title={text("Title","Look at the value!")}
/>
);
```
1. Remove the `@storybook/addon-knobs` dependency.
2. Import the Story type from `@storybook/react`
The general convention is that the first parameter of the knob is its name and the second is the default value. There are some more types:
@@ -47,3 +47,16 @@ 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.
## Troubleshooting
### Containers fail to start (Mac OS)
```
ERROR: for <service_name> Cannot start service <service_name>: OCI runtime create failed: container_linux.go:349: starting container process caused "process_linux.go:449: container init caused \"rootfs_linux.go:58: mounting ... merged/var/log/grafana: operation not permitted\\\"\"": unknown
ERROR: Encountered errors while bringing up the project.
```
If running Mac OSX the above error might be encountered when starting certain Docker containers that mount `/var/log/`. When first run this causes Docker to try to create the folder `/var/log/grafana` however by default Docker for Mac does not have permission to create folders at this location as it runs as the current user.
To solve this issue manually create the folder `/var/log/grafana` and give your user write permissions then try starting the containers again.
# Wait for the influxd service in the influxdb container has fully bootstrapped before trying to setup an influxdb instance with the influxdb_cli service.
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.