Table: Fix migrations from old angular table for cell color modes (#65760)
* Table: Fix migrations from old angular table
* Update defaults
(cherry picked from commit 3843c73162)
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
PluginExtensions: Adding full targets to the panel menu context (#65861)
* Making sure we add the whole query to the dashboard panel context.
* Adding some more tests.
* Synced with main.
(cherry picked from commit c8ecd0679b)
Co-authored-by: Marcus Andersson <marcus.andersson@grafana.com>
PluginExtensions: Fixed issue in typings for the onClick link callback (#65978)
* Fixed bug with event being forced.
* Made onClick undefinable in the config as well.
* Fixed some more type issues.
(cherry picked from commit 9719ee9bd3)
Co-authored-by: Marcus Andersson <marcus.andersson@grafana.com>
Alerting: Use a completely isolated context for state history writes (#64989)
* Add fresh context with timeout and same log properties, re-derive logger
* Unify timeout constants
* Move ctx after shortcut that got added through rebasing
* Unify timeouts
* Port opentracing's SpanFromContext and ContextFromSpan to the grafana tracing package
* Support both opentracing and otel variants
* Better document why we're creating a new ctx
* Add new func to FakeSpan which was added after rebase
* Support grafana-specific traceID key in both tracer implementations
(cherry picked from commit fb520edd72)
Co-authored-by: Alexander Weaver <weaver.alex.d@gmail.com>
Docs: Added note to contact Support (#65235)
* Added note to contact Support
* Update docs/sources/setup-grafana/configure-security/configure-authentication/enhanced-ldap/index.md
* Update docs/sources/setup-grafana/configure-security/configure-authentication/enhanced-ldap/index.md
* makes prettier
* Apply suggestions from code review
---------
Co-authored-by: Christopher Moyer <35463610+chri2547@users.noreply.github.com>
Co-authored-by: Chris Moyer <chris.moyer@grafana.com>
(cherry picked from commit 445734888b)
Co-authored-by: melGL <81323402+melgl@users.noreply.github.com>
PluginExtensions: Fixed issue with incorrect type being exposed when configuring an extension (#65910)
Fixed issue with wrong type required in configureExtensionLink
(cherry picked from commit 68796a9f31)
Co-authored-by: Marcus Andersson <marcus.andersson@grafana.com>
* navigation related text updates
* fixed lead-in sentences and indented config options as part of steps
* updated azure managed identity image
* Apply suggestions from code review
Co-authored-by: Christopher Moyer <35463610+chri2547@users.noreply.github.com>
---------
Co-authored-by: Christopher Moyer <35463610+chri2547@users.noreply.github.com>
* Nested folders: Fix moving folder under root
* Add store test for not empty parent after update
* Modify folder and document store update implementation
Move folder only if NewParentUID is not nil
* Apply suggestion from code review
* update enhanced-ldap
documenting a potential issue with ldap active sync, when search filter and username attributes do not match.
* Update docs/sources/setup-grafana/configure-security/configure-authentication/enhanced-ldap/index.md
* formats example
* Update docs/sources/setup-grafana/configure-security/configure-authentication/enhanced-ldap/index.md
---------
Co-authored-by: Christopher Moyer <35463610+chri2547@users.noreply.github.com>
Co-authored-by: Chris Moyer <chris.moyer@grafana.com>
* docs(pluginextensions): initial commit detailing how to add menu items to grafana
* docs(pluginextensions): initial commit detailing how to do cross plugin linking
* Update cross-plugin-linking.md
* Update extend-the-grafana-ui-with-links-and-commands.md
* style(pluginextensions): prettier fix for extend the grafana ui with links and commands
* Update docs/sources/developers/plugins/extend-the-grafana-ui-with-links-and-commands.md
Co-authored-by: Andres Martinez Gotor <andres.martinez@grafana.com>
* Update docs/sources/developers/plugins/cross-plugin-linking.md
Co-authored-by: Marcus Andersson <marcus.andersson@grafana.com>
* docs(pluginextensions): add info for placements and link to metadata
* docs(plugin-extensions): update metadata for new docs pages
* docs(plugin-extensions): pr feedback
* Update docs/sources/developers/plugins/cross-plugin-linking.md
Co-authored-by: Levente Balogh <balogh.levente.hu@gmail.com>
* docs(plugin-extensions): remove all mention of commands
* chore(plugin-extensions): rename extension doc to remove reference to commands
* docs(plugin-extensions): replace usage of placement with extension point
* docs(plugin-extensions): lowercase ID
---------
Co-authored-by: Joseph Perez <45749060+josmperez@users.noreply.github.com>
Co-authored-by: Andres Martinez Gotor <andres.martinez@grafana.com>
Co-authored-by: Marcus Andersson <marcus.andersson@grafana.com>
Co-authored-by: Levente Balogh <balogh.levente.hu@gmail.com>
* empty dashboard related updates
* updated steps to clearly indicate button names
Some steps indicated the heading as the thing to click rather than the button text. Also some of the button text wasn't quite accurate.
* remove incorrect instruction
* apply suggestion from review
Co-authored-by: Christopher Moyer <35463610+chri2547@users.noreply.github.com>
* pushing empty commit to trigger linting
* triggering linting
---------
Co-authored-by: Christopher Moyer <35463610+chri2547@users.noreply.github.com>
* Added onClick to the link and made path optional.
* Added type to the import.
* revert(plugin-extensions): put back isPromise utility function
* Minor update to the isPromise function.
* added onClick in the panel menu item.
---------
Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>
Co-authored-by: Levente Balogh <balogh.levente.hu@gmail.com>
remove two reviewer checklist items
Remove FRR and compatibility checks, because the FRR is only for new features and compatibility is impossible to confirm.
* Add CloudMode to build versions
* Use linux-amd64 variant without musl for cloud mode
* Add cloud mode to version folder on package upload
* Use musl variant for CloudMode
* Only sign rpm packages if there's any to sign
* Remove trailing whitespace
* Update chunking mentions in the code and ui
* Rename files and exported functions
* Rename configuration attribute
* Rename grouped querying function name
* Update more function names
* Update unit test
* Update unit tests
* More renames
* Rename time splitting functions
* Plugins: Tracing: Disable tracing by default, pass GF_VERSION only if tracing is enabled
* Plugins: Tracing: Fix GF_PLUGIN_VERSION instead of GF_VERSION
* PanelChrome: Add option to show actions on the right side
* remove button style change
* Added docs and minor tweaks to align the type with titleItems
* Hover header fixes, storybook improvements, and title description fix
* Fixed condition for drag icon in hover header
This commit adds a number of limits to the Grafana flavor of the
Prometheus Rules API:
1. `limit` limits the maximum number of Rule Groups returned
2. `limit_rules` limits the maximum number of rules per Rule Group
3. `limit_alerts` limits the maximum number of alerts per rule
It sorts Rule Groups and rules within Rule Groups such that data in the
response is stable across requests. It also returns summaries (totals) for
all Rule Groups, individual Rule Groups and rules.
* Hide dashboard hint when dashboard already selected
* Disable panels of types other than graph and timeseries
* Add a test checking disabled panels
* Make all panels selectable
* Fix tests
* Update query display
* Remove links as they don't work
* Remove unused CSS
* Improve styling and add description for data field
* Update docs
* Fix up docs some more
* Move special data sources back to the bottom
* Add language back
* Change order of special datasrouces in docs
* WIP
* skip invalid historic configurations instead of erroring
* add warning log when bad historic config is found
* remove unused custom marshaller for GettableHistoricUserConfig
* add id to historic user config, move limit check to store, fix typo
* swagger spec
* extract function
* use context logger
* put alert to general folder if folder is missing
* move folderHelper init
* add test
* Update pkg/services/sqlstore/migrations/ualert/ualert.go
Co-authored-by: Matthew Jacobson <matthew.jacobson@grafana.com>
---------
Co-authored-by: Matthew Jacobson <matthew.jacobson@grafana.com>
* Alerting: Respect "For" Duration for NoData alerts
This change modifies `resultNoData` to be more inline with the logic of the other state handlers.
The main effects of this are:
1) NoData states with NoDataState config set to Alerting will respect "For" duration.
2) Prevents zero value in StartsAt and EndsAt for alerts that have only even been in normal state. This includes state transitions from NoDataState=OK and ExecErrState=OK.
3) Better state transition logging.
* wip for move folders
* hello
* Polish up move dashboard results messages
* tests
* fix other test
* tweak messages when things can't be moved
* tweak messages when things can't be moved
* fix tests
* remove comment
* restore failOnConsole
* .
* Fix move modal not opening due to dodgy rebase
* Elasticsearch: Add benchmarks for processing of requests and responses
* Update, use package variable to elimitnate possible optimization
* Update, require no error
* TraceQL - configurable static fields for new UI
* TraceQL - filter out static fields from Tags section. Added tooltip to static fields
* Add more units to duration validation. Improve duration field tooltip with accepted units
* Better control of delete button on SearchField
* Move new config behind feature toggle
* Special title for intrinsic "name"
* Fix tests
* Move static fields not in the datasource to the Tags section
* Start using the useAsync hook in the Tempo TraceQL configuration page to retrieve the tags and datasource
* Fix tests
* Fix test. Use useAsync to retrieve options in SearchField
* Remove ability to set a default value in filter configuration.
Removed type from filter, dynamic filters are now any filters not present in the datasource config
* Updated the static filters tooltip
* Replace useState + useEffect with useMemo for scopedTag
* Logs Volume: identify timeouts and provide remediation action
* Supplementary result error: refactor updated component API
* Create helper to identify timeout errors
* Update timeout identifying function
* Add unit test
* Update panel unit test
* Update public/app/features/explore/utils/logsVolumeResponse.ts
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
* Use some instead of reduce
* Change alert type to info
* Add comment
* Remove unnecessary optional chaining
* Remove unnecessary condition
* Remove unnecessary wrapping arrow function
---------
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
* add selector to close dashboard settings and use it in e2e tests
* check visibility of add panel button
* check visibility of add new panel button before clicking
* Update scenes to latest
* Replace FormatRegistryID with VariableFormatID
* Remove scene demos that were moved to scenes repo, fix the remaining demos
* Fix grafana Monitoring app
* DashboardsLoader migration
* Fix test
* Tracing: Pass OTLP address and propagation format to plugins
* Fix unit tests
* Fix indentation
* Fix plugin manager integration tests
* Goimports
* Pass plugin version to plugins
* Do not add GF_PLUGIN_VERSION if plugin version is not set, add tests
* Allow disabling plugins distributed tracing on a per-plugin basis
* Moved disabled plugins to tracing.opentelemetry config section
* Pre-allocate DisabledPlugins map to the correct size
* Moved disable tracing setting flags in plugin settings
* Renamed plugin env vars for tracing endpoint and propagation
* Fix plugin initializer tests
* Refactoring: Moved OpentelemetryCfg from pkg/infra to pkg/plugins
* Changed GetSection to Section in parseSettingsOpentelemetry
* Add tests for NewOpentelemetryCfg
* Fix test case names in TestNewOpentelemetryCfg
* OpenTelemetry: Remove redundant error checks
* define 3 feature toggles for rollout phases
* Pass feature toggles along
* Implement first feature toggle
* Try a different strategy with fall-throughs to specific configurations
* Apply toggle overrides once outside of backend composition
* Emit log messages when we coerce backends
* Run code generator for feature toggle files
* Improve wording in flag descs
* Re-run generator
* Use code-generated constants instead of plain strings
* Use converted enum values rather than strings for pre-parsing
* Give more detail and context on http_addr in grafana.ini
This particular configuration item is misleadingly named (it's about networking addresses rather than HTTP) and there are a bunch of ways users can misread, misconfigure, and create a situation where grafana won't start due to a bind error.
I'm trying to outline a couple of extra things about what this covers and provide good default advice, leaving room for specialists who know what they're doing to still use this, with more clarity.
* Update _index.md
* Apply suggestions from code review
Co-authored-by: Christopher Moyer <35463610+chri2547@users.noreply.github.com>
* Update _index.md
removed recommendation note about http_addr
* makes prettier
---------
Co-authored-by: Christopher Moyer <35463610+chri2547@users.noreply.github.com>
Co-authored-by: Chris Moyer <chris.moyer@grafana.com>
* Empty Dashboard state has its own CTA items and its own separate box to choose a library panel to create
* show empty dashboard screen if no panels
* add feature flag for empty dashboard redesign
* only show empty dashboard redesign if FF
* add-new-panel button is a dropdown with options: visualization, row, import, paste
* fix onPasteCopiedPanel types
* do not create new panel to new dashboard if emptyDashboardPage FF true
* ToolbarButton does not allow rendering of Dropdown's overlay - switch to Button
* remove panel-add icon's default size of xl
* separate components for add new panel from dash navigation bar
* enable topnav by default
* rename dashboard-search to dashboard-browse
* wait for time to be set in e2e test before attempting to click button
* update toggle description
* Nested Folders: Fix move response
Fix JSON tags to be consistent with the GET endpoint
* Add API test for moving to root folder
* Allow move to root folder
* Fix failure message
* Update OpenAPI specification
* move export rules to definitions package
* move provisioning contact point methods to provisioning package
* move AlertRuleGroupWithFolderTitle to ngalert models and adapter functions to api's compat
* move rule_types files back to where they were before.
* Remove private labels
* No longer index by instance labels
* Labels are now invariant, only build them once
* Remove bucketing since everything is in a single stream
* Refactor statesToStreams to only return a single unified log stream
* Don't query on labels that no longer exist
* Move selector logic to loki layer, genericize client to work in terms of straight logQL
* Add support for line-level label filters in query
* Combine existing selector tests for better parallelism
* Tests for logQL construction
* Underscore instead of dot for unwrapping labels in logql
* Add back log lines changes
This reverts commit f43ef18732.
* Bring in @torkelo ’s changes to template_srv, implement with new format
* Enable functionality
* Remove non relevant test
* Fix tests, add @ifrost suggested tests and clarifying comment
* Add test around static link logic
* Alerting: Add CustomDetails for PagerDuty
* fix default value for 'severity' from 'error' to 'critical'
* minimal docs for notifiers, specifying config for PagerDuty
* replace notifier -> integration
* replace notifier -> integration
* Merge log volume by data source name
* Fix creating response for multiple fallback volumes
* Fix unit tests
* Hide title if there's only one log volume visible
* Make hide title optional
* Remove redundant parentheses
* Do not use frame.name, so the visualization can pick displayNameFromDS from the field config
* Simplify setting aggregated data frame meta data
* Update public/app/features/logs/utils.ts
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
* Fix legend toggling
* Ensure limited graph info is shown
* Always show the data source name
---------
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
* Upgrade grafana-google-sdk-go to v0.1.0
* Upgrade @grafana/google-sdk to 0.1.1
* Update doc with provisioning example
* Remove unused types
* Use config types from the sdk
* Add metrics
* updated all text related to panel actions menu
* removed to do notes and updated intro text for panel inspect
* added screenshot
* added indents
* replaced panel links image and updated intro text
* added missed panel header related updates
* updated panel editor overview image
* chunked out steps per review feedback
* Remove the info about custom Prometheus Query Editor as it's not relevant since #60020
* Update basic Explore documentation
* Change graphs and tables to visualizations as Explore supports different types of visualization
* Make clear "Starred" refers to a tab
* Update how to select start/end date for query history
* Remove Prometheus specific section as it's no longer relevant. Prometheus query editor is documented in https://grafana.com/docs/grafana/latest/datasources/prometheus/query-editor/#metrics-browser
* Add informational log level (added in #30942)
* Use more direct language
* Fix a link
* Make headers more consistent
* Minor tweaks
* Update docs/sources/explore/explore-inspector.md
Co-authored-by: Eve Meelan <81647476+Eve832@users.noreply.github.com>
* Do not enumerate bullet points
* Fix incorrect header type
* Update tracing headers
* Link to more info about Mixed data source
* Use "data source" instead of "datasource"
* Fix tracing headers
* Fix more log headers
* Update docs/sources/explore/explore-inspector.md
Co-authored-by: J Stickler <julie.stickler@grafana.com>
---------
Co-authored-by: Eve Meelan <81647476+Eve832@users.noreply.github.com>
Co-authored-by: J Stickler <julie.stickler@grafana.com>
* copy edit
* copy edits plus some restructuring
* Apply suggestions from code review
Co-authored-by: Dan Cech <dcech@grafana.com>
---------
Co-authored-by: Dan Cech <dcech@grafana.com>
* Templating: Introduce macros to simplify and optimize some scopedVars
* Fixing tests
* fix test
* minor fix
* refactoring so macros work with formatting
* remove breaking change and keep current inconsistency
* Rename valueIndex to rowIndex
* Minor fixes
* Added test dashboard
* Added tags to dashboard
* Update
* Added test to check it returns match
* Update
* Fixed dashboard
* fix
* Remove redundant content or delete this page entirely
The top of the page has redundant content pitching Grafana Cloud.
"You can also configure the MS SQL Server data source on a Grafana Cloud instance without having to host Grafana yourself." Which is directly under the highlighted area explaining the same thing. The same content is floating in the right side of all the pages as well.
Removed "> **Note:** You must install Grafana 5.1+ in order to use the integrated MS SQL data source."
Wait, why does this page exist if the data source page has the relevant updated content? https://grafana.com/docs/grafana/latest/datasources/mssql/
* makes prettier
---------
Co-authored-by: Chris Moyer <chris.moyer@grafana.com>
* Send retention policy if that is specified
* Define the type
* Update default retention policy name
* Update unit tests
* fix unit tests
* fix unit tests again
* Load retention policies at first
* Fix tests
* Fix Editor tests
* Remove unused code
* A simpler approach
* Even simpler
* Even simpler
* Empty Dashboard state has its own CTA items and its own separate box to choose a library panel to create
* show empty dashboard screen if no panels
* start page for empty dashboard
* add feature flag for empty dashboard redesign
* only show empty dashboard redesign if FF
* copy AlertQuery from ngmodels to the definition package
* replaces usages of ngmodels.AlertQuery in API models
* create a converter between models of AlertQuery
---------
Co-authored-by: Alex Moreno <alexander.moreno@grafana.com>
* navigation related updates - text only
* navigation related updates
* navigation related text updates
* navigation related text updates
* navigation related text and image updates
* docs: add featuretoggle introduction
* update to point to the setting instead
* Update docs/sources/administration/user-management/manage-org-users/index.md
Co-authored-by: Christopher Moyer <35463610+chri2547@users.noreply.github.com>
* update text
---------
Co-authored-by: Christopher Moyer <35463610+chri2547@users.noreply.github.com>
* Replace tmp folder for tar stdin on build-docker-full
* Fix building linux/arm64 images using the Dockerfile
Introduces JS_PLATFORM variable with linux/amd64 as default to allow building node packages.
* Revert unintended white line changes on Dockerfile
* FeatureToggle: Add toggle to use a new way of rotating tokens
* API: Add endpoints to perform token rotation, one endpoint for api request and one endpoint for redirectsd
* Auth: Aling not authorized handling between auth middleware and access
control middleware
* API: add utility function to get redirect for login
* API: Handle token rotation redirect for login page
* Frontend: Add job scheduling for token rotation and make call to token rotation as fallback in retry request
* ContextHandler: Prevent in-request rotation if feature flag is enabled and check if token needs to be rotated
* AuthN: Prevent in-request rotation if feature flag is enabled and check if token needs to be rotated
* Cookies: Add option NotHttpOnly
* AuthToken: Add helper function to get next rotation time and another function to check if token need to be rotated
* AuthN: Add function to delete session cookie and set expiry cookie
Co-authored-by: Ieva <ieva.vasiljeva@grafana.com>
* dirty dirty code for showing nested folders in folder view
refactor to NestedFolderItem
Update dashboard grid view to new types
update tests
REBASE OUT OF THIS BRANCH - joshhunt/star-by-uid merged into this
Squashed commit of the following:
commit d0f046ccd3
Author: joshhunt <josh@trtr.co>
Date: Wed Feb 8 18:35:56 2023 +0000
undo async
commit abe2777a1f
Author: joshhunt <josh@trtr.co>
Date: Wed Feb 8 18:34:11 2023 +0000
Dashboards: Star dashboards by UID
add type for dashboard search dto
clean DashboardSearchItem type
simplify DashboardSearchHit type
remove unused properties from DashboardSearchHit
make uid non-optional
rename + move NestedFolderItem type to DashboardViewItem
clean up
* wip
* fix checkbox selection of nested folders
* show folder's parent correctly
* Add dashboard result kind
* don't render folder empty view in SearchView
* call nested folders api only if feature flag enabled
* remove unused import
* un-rename variable to reduce PR diff
* fix typo in comment
* fix order of pseudoFolders
* Fix General folder not showing in browse
* rename folder view tests
---------
Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
* Elasticsearch: Remove GetMinInterval method that is not used anymore
* Elasticsearch: Fix using of interval value in histogram
* Revert "Elasticsearch: Remove GetMinInterval method that is not used anymore"
This reverts commit a157003902.
* Create simple Wizard for Correlations editor
* Allow using custom navigation in the wizard
* Update types
* Add more info
* Add comments
* Update comments
* Remove main info box to avoid having too many info boxes
* Fix CorrelationsPage.test.tsx
* Add Wizard test
* Simplify Correlations wizard
* Make expected typing error more explicit
* Don't use meaningless defaults
* fix: disable orgrolepicker if externaluser is synced
* add disable to role picker
* just took me 2 hours to center the icon
* wip
* fix: check externallySyncedUser for API call
* remove check from store
* add: tests
* refactor authproxy and made tests run
* add: feature toggle
* set feature toggle for tests
* add: IsProviderEnabled
* refactor: featuretoggle name
* IsProviderEnabled tests
* add specific tests for isProviderEnabled
* fix: org_user tests
* add: owner to featuretoggle
* add missing authlabels
* remove fmt
* feature toggle
* change config
* add test for a different authmodule
* test refactor
* gen feature toggle again
* fix basic auth user able to change the org role
* test for basic auth role
* make err.base to error
* lowered lvl of log and input mesg
* draft changes
* Apply suggestions from code review
Co-authored-by: Dan Cech <dcech@grafana.com>
* reworks debian/ubuntu instructions, updates start server topic
* Apply suggestions from code review
Co-authored-by: Dan Cech <dcech@grafana.com>
* incorporates feedback; restructures to align with writers toolkit guidelines
* Apply suggestions from code review
Co-authored-by: Dan Cech <dcech@grafana.com>
* tweaks structure of server topic; renames directory, corrects relrefs
* corrects spelling
* Apply suggestions from code review
Co-authored-by: Dan Cech <dcech@grafana.com>
* removed web parameter
* removes unnecessary word
* incorporates feedback from internal reviewer
* updates alias
* updates alias
* adjust alias
---------
Co-authored-by: Dan Cech <dcech@grafana.com>
* Improve showing nextEvaluationDate for rules
Co-Authored-By: Konrad Lalik <konradlalik@gmail.com>
* Improve imports and comments
---------
Co-authored-by: Konrad Lalik <konradlalik@gmail.com>
Logs sample: use the selected time range in sample request
There are parts of the query, such as label values, that could only be present during the current selected time interval. If we request using a time range other than the selected one, we are not providing builder suggestions based on the same data that the user is seeing.
* Support having a datasources array in the rules filter
* Fix tests
* Display a MultiplePicker for filtering datasources
* Fix tests
* Refactor as MultipleDataSourcePicker as FC
* Make select box wider
* Remove FC from component definition
* Display ds options in groups based on whether they manage/don't manage rules
* Change dropdown texts and add help info
* Push values with every map call to avoid hitting the maximum call stack size.
* Add test and refactor to for of
* Use native fill instead of lodash
---------
Co-authored-by: Zoltán Bedi <zoltan.bedi@gmail.com>
* bring in source from database
* bring in transformations from database
* add regex transformations to scopevar
* Consolidate types, add better example, cleanup
* Add var only if match
* Change ScopedVar to not require text, do not leak transformation-made variables between links
* Add mappings and start implementing logfmt
* Add mappings and start implementing logfmt
* Remove mappings, turn off global regex
* Add example yaml and omit transformations if empty
* Fix the yaml
* Add logfmt transformation
* Cleanup transformations and yaml
* add transformation field to FE types and use it, safeStringify logfmt values
* Add tests, only safe stringify if non-string, fix bug with safe stringify where it would return empty string with false value
* Add test for transformation field
* Do not add null transformations object
* Add provisioning (to be removed) and show log lines with links
* Only display links if change to query was made
* Break out transformation logic, add tests to backend code
* Fix lint errors I understand 😅
* Fix the backend lint error
* Remove unnecessary code and mark new Transformations object as internal
* Add support for named capture groups
* Remove type assertion
* Remove variable name from transformation
* Add test for overriding regexes
* Add back variable name field, but change to mapValue
* fix go api test
* Change transformation types to enum, add better provisioning checks for bad type name and format
* Change transformation types to enum, add better provisioning checks for bad type name and format
* Check for expression with regex transformations
* Remove isInterpolated variable, add option to always use format function
* Add template variable check to links
* Use new functions
* Filter log line at render, remove extra createSpanLink imports
* Add scrollable to long log messages
* Remove test that is no longer accurate
* Remove test correlation
* Add tests, fix duplicate key issue
* WIP: show log line links key/value pairs
* Some not great style changes
* Change LogDetailsRow for better multi value formatting
* Cleanup
* Add additional information around variable regex, implement PR feedback
* Display name with fieldPath if applicable
* Add variables with fieldPaths to test
* Count empty string as undefined variable
* Add better commented version of function, fix tests by removing new variable
* Modify when links show
* Remove sample yaml
* If a link has no variables, set value to field name, and some formatting issues
* Add comments and change variable names to be more clear, add back logic where needed, add test coverage for new scenario
* Fix formatting of replaceInVariableRegex comment
* Remove changes from Grafana-data, move logic into explore
* Rename function and property to match similar format
* Move types to type files and consolidate definitions, rename functions, change field definitions to accept arrays of keys/values, move function to parser, hide actions on multi key/value rows
* Add tests to logParser’s new function
* Create RecordingRuleEditor component
It reuses QueryEditor and propagates a few properties to allow to filter the visible datasources and customize what's shown in the editor header
* Set recording rules queries as a new state prop
Otherwise it would get mixed up with the alert rules queries when switching back and forth from this option. This also allows me to initialize these queries with the right datasource
* Show CloudRulesSourcePicker only for Loki/Mimir rules
As now we use the query editor for recording rules which already includes a datasource picker within
* Fix lint and tests
* Fix saving a recording rule
* Show expression when editing the recording rule
* Show query editor back for cloud rules
* Fix duplicated import
* Tweak after rebase
* Remove ts-ignore
* Refactor to use queries state instead of recordingRuleQueries
* Refacrtor RecordingRuleEditor to use ds QueryEditor
* Revert extra properties previously added to QueryEditor components
* Remove console.log
* Fix saving/editing a recording rule
* Fix tests
* Add margin to vizwrapper component
* turn on dataConnectionsConsole by default
* change connection feature state to stable
* generate feature toggle files
* increase error threshold for pa11y
* Encode with snappy, always
* JSON encoder type
* Headers
* Copy labels formatter from promtail
* Implement snappy-proto encoding
* Create encoder interface, test both encoders, choose snappy-proto by default
* Make encoder configurable at the LokiCfg level
* Export both encoders
* Touch up comment and tests
* Drop unnecessary conversions after move to plain strings to appease linter
* text nav updates
* navigation related updates
* used Connections instead of Administration workflow for add data source steps
* wording edit
* updated data source permissions section
* Apply suggestions from code review and wording edit
* empty commit to trigger linting
* change to trigger linting
* Added scope to filter
* Intrinsic fields don't have scope
* Consistent plus button placement next to the last tag. Changed All Scopes to "unscoped"
* Added validation to duration fields
* Disable options load when dropdown is opened
* Use focused list of operators when all values are of type string or int/float
* Fixed and added tests
* Fix another test
* Better way to prevent duplicate and redundant backend requests when a filter updates
* Rename splitting files to chunking
* Rename time chunking functions
* Move response functions to response utils
* Remove some blank spaces
* Add an extra test case for frame refIds and names
* updates windows/mac install topics
* corrects typo
* Apply suggestions from code review
Co-authored-by: Dan Cech <dcech@grafana.com>
* tweaks
---------
Co-authored-by: Dan Cech <dcech@grafana.com>
* Prometheus: Run query explicitly instead of onblur in panel edit, and highlight Run qqueries when query changed
* Update loki to do the same
* Cleanup unused prop
* Remove test
* Update _index.md
I am creating this PR to add more content about the SQLite (the default database for Grafana) limitations. SQLite is fine for small environments but not suitable when monitoring many Dashboards and sending lots of alerts frequently.
For e.g. this issue is just from this week and then got followed up by 3-4 more similar issues (all related to SQLite and are linked with this issue)
Closes#64664
By adding more information, will have less frequency of such issues reported by users.
Also, once this PR get submitted, will also create a new PR about the possible workaround to not get the error message "database locked" while using SQLite.
* Update docs/sources/setup-grafana/installation/_index.md
Thank you. Also, can you please add this link to the High Availablity text as hyperlink.
Co-authored-by: Christopher Moyer <35463610+chri2547@users.noreply.github.com>
* Update docs/sources/setup-grafana/installation/_index.md
* Update docs/sources/setup-grafana/installation/_index.md
---------
Co-authored-by: Christopher Moyer <35463610+chri2547@users.noreply.github.com>
* [Docs] - Add Warning about Version Downgrade and Alerting to Grafana v9.4 Upgrade Instructions
Add Warning about Version Downgrade and Alerting to Grafana v9.4 Upgrade Instructions
* Update docs/sources/upgrade-guide/upgrade-v9.4/index.md
Co-authored-by: Christopher Moyer <35463610+chri2547@users.noreply.github.com>
* Update docs/sources/upgrade-guide/upgrade-v9.4/index.md
Co-authored-by: Christopher Moyer <35463610+chri2547@users.noreply.github.com>
* makes prettier
---------
Co-authored-by: Christopher Moyer <35463610+chri2547@users.noreply.github.com>
Co-authored-by: Chris Moyer <chris.moyer@grafana.com>
* add `lokiQueryChunkingOption` feature flag
* be safe and also rely on `config.featureToggles.lokiQuerySplitting`
* renamed to `lokiQuerySplittingConfig`
* fix typo
* Elasticsearch: Fix processing of percentiles on backend
* Remove redundant logic as we do this in addMetricValue
* Refactor for less cyclomatic complexity
* Remove changes in createFieldsFromPropKeys
* add table results to metric encyclopedia
* remove extra tests
* add class to top align text in td elements
* add secondary style to use metric button and remove unused styles
* Prometheus: Make metrics encyclopedia more responsive for smaller screens (#64909)
* improvements
* remove comments
* feat: exclude all mertics with no metadata
* remove comment
* convert from InlineSwitch to Switch components
* fix bug, enter a fuzzy search sentence, switch to fullMetaSearch, perform fuzzysearch function
---------
Co-authored-by: Gareth Dawson <gareth.dawson@grafana.com>
* protect moving folders to a subfolder and creating folders in a subfolder
* folder update endpoint isn't used for folder parent update
* lint
* move permission check logic to services, fix tests
* linting
* Scenes: Progress on demo app
* Argh
* Fixing breadcrumbs
* Added spacer
* Conditional scene objects
* Quick and dirty test for drilldown link via panel title
* Changed the toggle
* Add url state syncing for most links
* Add url state syncing for most links
* Fix instance in url params
* Quick and dirty tabs on the handler page
* fixing breadcrumbs
* Hide footer
* Updates
* new table styles
* Update table cell link styles
* Added search box
* Scene app demo: dynamic data link (#60398)
* Dynamically build data links
* Add field override tests
* Updates
* Updated
* Updates
* before nesting routing
* Something is working
* Caching and nested routes working
* Simplify model
* Use app components from grafana/scenes
* Make the monitoring app work with section nav
* Fixing
* Update scenes
* Remove unused route
* Updates
* remove file
* Update scenes version and use new features
* Remove semicolon
* removed unused thing
* Add refresh pickers
---------
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
* Rename RecordStatesAsync to Record
* Rename QueryStates to Query
* Implement fanout writes
* Implement primary queries
* Simplify error joining
* Add test for query path
* Add tests for writes and error propagation
* Allow fanout backend to be configured
* Touch up log messages and config validation
* Consistent documentation for all backend structs
* Parse and normalize backend names more consistently against an enum
* Touch-ups to documentation
* Improve clarity around multi-record blocking
* Keep primary and secondaries more distinct
* Rename fanout backend to multiple backend
* Simplify config keys for multi backend mode
* add `correlationId` to queries
* trace correlation id in backend
* add correlation id to loki's span
* add correlation id to query chunks
* fix test
* fix DataSourceWithBackend test
* change to `queryGroupId`
* remove empty line
* fix test in `DataSourceWithBackend`
* feat(pluginextensions): move panel menu links into an extensions submenu
* refactor(pluginextensions): move extensions submenu above more... submenu
* test(panelmenu): fix failing tests after moving extensions out of more
* fix: fix rebase issues
---------
Co-authored-by: Levente Balogh <balogh.levente.hu@gmail.com>
* fix: refresh query stats on timerange change
* partial fix: request stats update on type in code mode
* complete fix: request stats update on type in code mode
* fix: update failing tests and props
* refactor: pass only essential query string to getQueryStats
* refactor: remove unused variables
* test: fix datasource.getTimeRange is not a function
* refactor: use lodash debounce instead of setTimeout
* refactor: add suggestions from code review
* test: shouldUpdateStats and makeStatsRequest
* refactor: use more appropriate variable names
* refactor: make setQueryStats required instead of optional
* refactor: move setQueryStats into LokiQueryEditor
* fix: add missing props to LokiQueryField
* revert changes
* refactor: use inversion of control to request stats
* refactor: remove unnecessary code
* improvements for starred dashboard search
* fix workflows for the case when no dashboards are starred
* PR feedback (don't query DB if starred dashboards and requested but no starred IDs are found) and linting
* return empty list not null in case of no starred dashboards
* return empty list not null in case of no starred dashboards pt 2
* return empty list not null in case of no starred dashboards pt 3
* Fix reference to Grafana CLI
- Make relref for relative permalink
- Use relative path for unambiguous resolution
Signed-off-by: Jack Baldry <jack.baldry@grafana.com>
* Fix alerting relref anchor format
Signed-off-by: Jack Baldry <jack.baldry@grafana.com>
* Avoid ambiguous relref lookups by forcing relative resolution
Signed-off-by: Jack Baldry <jack.baldry@grafana.com>
* Remove reference to non-existent shared page
Signed-off-by: Jack Baldry <jack.baldry@grafana.com>
* Fix links broken in Grafana Cloud using absolute relrefs
By resolving the relref absolutely, it refers to the same location
regardless of mounted directory.
Signed-off-by: Jack Baldry <jack.baldry@grafana.com>
* Remove trailing slash for bundle independent resolution
Signed-off-by: Jack Baldry <jack.baldry@grafana.com>
* Fix typo
Signed-off-by: Jack Baldry <jack.baldry@grafana.com>
* For now, avoid Hugo checking cross repository /docs/grafana-cloud link
The path is unlikely to change in the short term and this makes CI
completely green for now.
Signed-off-by: Jack Baldry <jack.baldry@grafana.com>
* No need to specify path for in page anchors
Signed-off-by: Jack Baldry <jack.baldry@grafana.com>
* Fix prose
Co-authored-by: Christopher Moyer <35463610+chri2547@users.noreply.github.com>
---------
Signed-off-by: Jack Baldry <jack.baldry@grafana.com>
Co-authored-by: Christopher Moyer <35463610+chri2547@users.noreply.github.com>
* extract kindsys
* reinstate kindsys report
This may end up living somewhere else (or not! who knows!), but the important part is that I don't get rid of it right now :)
I hate the package layout (kindsysreport/codegen) for the main function and will take pretty much any alternative suggestion, but we can change also change it later.
Note that the generated report.json is in a different location - anything using this (ops something) needs to be updated.
* kindsysreport in codeowners
* Fix#56189 add auth source for users synced via external authentication
* update change role display logic based on user authentication method
* fix display for licensed ac
---------
Co-authored-by: Lokeswaran Aruljothi <74011196+a-loke@users.noreply.github.com>
* stop using the scheduler's Update and Delete methods all communication must be via the database
* update scheduler's registry to calculate diff before re-setting the cache
* update fetcher to return the diff generated by registry
* update processTick to update rule eval routine if the rule was updated and it is not going to be evaluated at this tick.
* remove references to the scheduler from api package
* remove unused methods in the scheduler
* Display last & next rule eval date plus eval duration
* Show next evaluation date in a humanized format
Full date still visible on hover
* Only show next evaluation column is group has an interval
* add filtered results
* add feedback link
* correctly debounce fuzzy search thank you leon
* reduce calls to filterMetrics()in letter search
* clean up the alphabet type
* bug fix, filter type should be subtractive
* each filter is don;t explicitly, subtracting from the results of each
* Revert "each filter is don;t explicitly, subtracting from the results of each"
This reverts commit 5648788451.
* each filter is filtered explicitly, one after the other, subtracting from the results of each
* Add 'Grafana Cloud' label to content
All pages are applicable to both 'Open source' and 'Grafana Cloud'
Signed-off-by: Jack Baldry <jack.baldry@grafana.com>
* Add 'Grafana Cloud' label to administration content with some exceptions
- Enterprise licensing is 'Open source' and 'Enterprise'.
- 'Manage Organizations', 'Provision Grafana', and 'Stats and License' are 'Open source' only.
Signed-off-by: Jack Baldry <jack.baldry@grafana.com>
* Remove OSS from enterprise-licensing content
* Apply suggestions from code review
---------
Signed-off-by: Jack Baldry <jack.baldry@grafana.com>
* baldm0mma/feature/solidOption/ update cue and ts types
* baldm0mma/feature/solidOption/ update data structures
* baldm0mma/feature/solidOption/ vizrepeater investigation
* baldm0mma/feature/solidOption/ add buildGradientBackground
* baldm0mma/feature/solidOption/ remove conlogs from fieldDisplay.ts
* baldm0mma/feature/solidOption/ rem destruct in fielddisplay.ts
* baldm0mma/feature/solidOption/ rem conlogs from bivaluelayout.tsx
* baldm0mma/feature/solidOption/ rem conlogs in visrepeater
* baldm0mma/feature/solidOption/ rem conlogs from statpanel.tsx
* baldm0mma/feature/solidOption/ add annotations in BigValue.tsx
* baldm0mma/feature/solidOption/ update cue
* baldm0mma/feature/solidOption/ remove unused anno
* baldm0mma/feature/solidOption/ update with toggle conditinal
* Update module.tsx
update anno
* baldm0mma/feature/solidOption/ update annos
* baldm0mma/feature/solidOption/ undo change
* baldm0mma/featurew/solidOption/ add anno for boolean toggle in stat module
* baldm0mma/featurew/solidOption/ update anno in BigValue.tsx for hasGradient
* baldm0mma/featurew/solidOption/ updart default logic in bigValueLayout.tsx
With v1.0.2 Faro explicitly closes fetch requests.
This fixes an issue were (headless) chrome browser
still considers those requests as open which lead to timeouts.
* Range splitting: allow splits larger than 30 days while keeping the fail safe
* Remove limit
* Fix test
* Remove unnecessary try/catch
* Remove unused export
* fix type assertions
* fix chk
* add nil and fix tests
* add test for null bool and strings in the JSON response to be parsed as nil in Go
* reduce complexity
* reduce complexity
* reduce complexity again
* switch case for valTypes
* BarGauge: New value options
* Fix typings for cell options, add new value mode option for bar gauge cells
* Add BarGauge panel option, tests, and update test dashboard
* Updated
* Added default
* Goodbye trusty console.log
* Update
* Merge changes from main
* Update docs
* Add valuemode doc changes
* Update gdev dashboard
* Update valueMode symbol name to valueDisplayMode
* Use Enums as Opposed to literals, don't calculate values when hidden
* Remove double import
* Fix tests
* One more test fix
* Remove erroneous targets field, fix type of maxDataPoints
* Strip nulls and add index field to Thresholds
* Gen cue
* remove bad targets again
* Fixes
---------
Co-authored-by: Kyle Cunningham <kyle@codeincarnate.com>
Co-authored-by: sam boyer <sdboyer@grafana.com>
* only redirect to /login when anonymous access is disabled
* only search for dashboards when not logged in if anon access is enabled
* fix go logic
* add unit tests
* Add basic fuzzy search
* Add fuzzy search to rule name, group and namespace filters
* Add tests
* Apply sort order when filtering
* Filter rules on Enter instead of onChange
* Add minor rule stats performance improvements
* Fix tests
* Remove unused code, add ufuzzy inline docs
* Use form submit to set query string, add debounce docs
* Elasticsearch: Add highlight for logs
* Fix running of queries trough backend only when shouldRunTroughBackend
* Fix incorrect json in test string
* Address feedback
* Keep order of words same
* Update codeowners file to transfer ownership of a few panels while dataviz is forming
* Update kindsys report
---------
Co-authored-by: Zoltán Bedi <zoltan.bedi@gmail.com>
* PanelChrome: Improve error state design
* Simplify logic for hoverHeader
* padding for the title only for the title, not the whole header
* Review fixes
* missed saving file
---------
Co-authored-by: polinaboneva <polina.boneva@grafana.com>
* Update index.md
Add additional steps to the Data Links section needed to associate a field value with a data link. A dashboard data link (previously referenced) displays for all elements.
* Fix linting issues
---------
Co-authored-by: nmarrs <nathanielmarrs@gmail.com>
* chore: assign the plugins platform team as the owner for the data-connections feature
* chore: remove the toggle from the list of unassigned features
* add alerting squad as an owner of some feature flags
* remove flags from owneless
---------
Co-authored-by: Artur Wierzbicki <artur.wierzbicki@grafana.com>
* baldm0mma/bug/tableFooter/ first commit
* baldm0mma/bug/tableFooter/ investigation annotations
* baldm0mma/bug/tableFooter/ solution
* baldm0mma/bug/tableFooter/ rem conlogs in footerrow.txs
* baldm0mma/bug/tableFooter/ rem conlogs in tablepanel.tsx
* baldm0mma/bug/tableFooter/ rem conlgs in table.tsx
* baldm0mma/bug/tableFooter/ rem conlogs in utils.ts
* baldm0mma/bug/tableFooter/ reset return in footerRow.tsx
* baldm0mma/bug/tableFooter/ rem unused anno in table.tsx
* baldm0mma/bug/tableFooter/ rem unsed annos in utils.ts
* baldm0mma/bug/tableFooter/ add addMissingColumnIndex
* baldm0mma/bug/tableFooter/ add annos
* baldm0mma/bug/tableFooter/ add annos
* baldm0mma/bug/tableFooter/ / add annos
* baldm0mma/bug/tableFooterFix/ update annos
* baldm0mma/bug/tableFooterFix/ update spelling in utils
* baldm0mma/bug/tableFooterFix/ rem unused condition in utils.ts
* baldm0mma/bug/tableFooterFix/ update anno in utils.ts
* Wrap comments and fix misspelling.
* baldm0mma/bug/tableFooterFix/ add TSDoc
* baldm0mma/bug/tableFooterFix/ update annotations in utils.ts
---------
Co-authored-by: Kyle Cunningham <kyle@codeincarnate.com>
* feat(plugins): introduce dashboard panel menu placement for adding menu items
* test: add test for getPanelMenu()
* added an unique identifier for each extension.
* added context to getPluginExtensions.
* wip
* Wip
* wiwip
* Wip
* feat: WWWIIIIPPPP 🧨
* Wip
* Renamed some of the types to align a bit better.
* added limit to how many extensions a plugin can register per placement.
* decreased number of items to 2
* will trim the lenght of titles to max 25 chars.
* wrapping configure function with error handling.
* added error handling for all scenarios.
* moved extension menu items to the bottom of the more sub menu.
* added tests for configuring the title.
* minor refactorings.
* changed so you need to specify the full path in package.json.
* wip
* removed unused type.
* big refactor to make things simpler and to centralize all configure error/validation handling.
* added missing import.
* fixed failing tests.
* fixed tests.
* revert(extensions): remove static extensions config in favour of registering via AppPlugin APIs
* removed the compose that didn't work for some reason.
* added tests just to verify that validation and error handling is tied together in configuration function.
* adding some more values to the context.
* draft validation.
* added missing tests for getPanelMenu.
* added more tests.
* refactor(extensions): move logic for validating extension link config to function
* Fixed ts errors.
* Started to add structure for supporting commands.
* fixed tests.
* adding commands to the registry
* tests: group test cases in describe blocks
* tests: add a little bit more refactoring to the tests
* tests: add a test case for checking correct placements
* feat: first version of the command handler
* feat: register panel menu items with commands
* refactor: make the 'configure' function not optional on `PluginExtensionRegistryItem`
* Wip
* Wip
* Wip
* added test to verify the default configure function.
* added some more tests to verify that commands have the proper error handling for its configure function.
* tests: fix TS errors in tests
* tests: add auxiliary functions
* refactor: small refactoring in tests
* refactor: refactoring tests for registryFactory
* refactor: refactoring tests for registryFactory
* refactor: refactoring tests for registryFactory
* refactor: refactoring tests for registryFactory
* refactor: refactoring tests for registryFactory
* refactor: refactoring tests for registryFactory
* refactor: refactoring tests for registryFactory
* refactor: refactoring tests for registryFactory
* draft of wrapping command handler with error handling.
* refactor: refactoring tests for registryFactory
* added test for edge case.
* replaced the registry item with a configure function.
* renamed the configure function type.
* refactoring of the registryfactory.
* added tests for handler error handling.
* fixed issue with assert function.
* added comment about the limited type.
* Update public/app/features/plugins/extensions/errorHandling.test.ts
Co-authored-by: Levente Balogh <balogh.levente.hu@gmail.com>
* Update public/app/features/plugins/extensions/errorHandling.test.ts
Co-authored-by: Levente Balogh <balogh.levente.hu@gmail.com>
* Update public/app/features/plugins/extensions/errorHandling.test.ts
Co-authored-by: Levente Balogh <balogh.levente.hu@gmail.com>
* added missing tests.
---------
Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>
Co-authored-by: Levente Balogh <balogh.levente.hu@gmail.com>
* Elasticsearch: Use displayName field for naming
* Change solution to frame.Name to be backward compatible
* Fix snapshot tests
* Use Time and Value for time and value fields
* Use variables from grafana-plugin-sdk-go for name
This commit changes the state package so that errors encountered while
expanding templates for custom labels and annotations are returned
from the function. This is not used at present, but will be used in the
future as we look at how to offer better feedback to users who don't
have access to logs, for example our customers who use Hosted Grafana.
* Add test for deleting snapshot for non existent dashboard
* Add test for failure to fetch guardian other than ErrDashboardNotFound
* Fix dashboard snapshot delete
* add metric encyclopedia feature toggle and component
* remove unused button
* move file, add test file
* add tests
* add pagination and tests
* test with 10,000,000 metrics
* remove unused import
* add filter by type
* search alphabetically and add switch to exclude metrics with no metadata
* add suggested functions and filter for functions
* allow user to select variables in encyclopedia
* fix style and tests
* add fuzzy search by either metric name or all metadata
* if missing metadata, remove metadata fuzzy search option, exclude metadata, and filter by type
* add encyclopedia feature tracking
* indicate that metrics are filtered by labels
* handle metric singular or plural
* add tooltips and fix language
* add filtering tests
* change 'search' to 'browse'
* remove functions filter and tests as not part of work flow
* add m.e. button and selected metric is a tag
* fix hanging search and update styles, padding, labels, and groupings
* small performance improvements
* fix tests
* add backend metrics query option
* add loading spinner for start load and backend search
* autofocus search input
* Update docs/sources/setup-grafana/configure-grafana/feature-toggles/index.md
Co-authored-by: Christopher Moyer <35463610+chri2547@users.noreply.github.com>
* run prettier
* run prettier
* fix text for feature toggle
* for license check since https://cla-assistant.io/check/grafana/grafana?pullRequest=<PR#> is not working
* fixing tests
* fix feature toggle docs
* fix feature toggle
* fix feature toggle
* add owner to feature toggle
---------
Co-authored-by: Christopher Moyer <35463610+chri2547@users.noreply.github.com>
* Consolidate logs volume logic (full range and limited)
* Fix showing limited histogram message
* Test passing meta data to logs volume provider
* Improve readability
* Clean up types
* Add basic support for multiple log volumes
* Move the comment back to the right place
* Improve readability
* Clean up the logic to support Logs Samples
* Update docs
* Sort log volumes
* Provide title to logs volume panel
* Move logs volume cache to the provider factory
* Add helper functions
* Reuse only if queries are the same
* Fix alphabetical sorting
* Move caching out of the provider
* Support errors and loading state
* Remove unused code
* Consolidate supplementary query utils
* Add tests for supplementaryQueries
* Update tests
* Simplify logs volume extra info
* Update tests
* Remove comment
* Update tests
* Fix hiding the histogram for hidden queries
* Simplify loading message
* Update tests
* Wait for full fallback histogram to load before showing it
* Fix a typo
* Add feedback comments
* Move feedback comments to github
* Do not filter out hidden queries as they may be used as references in other queries
* Group log volume by refId
* Support showing fallback histograms per query to avoid duplicates
* Improve type-checking
* Fix supplementaryQueries.test.ts
* Fix logsModel.test.ts
* Fix loading fallback results
* Fix unit tests
* WIP
* Update deprecated styles
* Simplify test
* Simplify rendering zoom info
* Update deprecated styles
* Simplify getLogsVolumeDataSourceInfo
* Simplify isLogsVolumeLimited()
* Simplify rendering zoom info
* Query splitting: enable instant queries
* Range splitting: send instant queries as another request group
* Range splitting: increase grouped splitted requests stability
We were defaulting to the `0` index as the first group for the next request batch, but there was no guarantee that the group `0` had a `.partition` entry for `requestN-1`. Now we find the first defined and use that index as the next starting group.
* Range splitting: update unit test
* Social: Fix type so it appears in error responses
* AuthN: construct errutil.Error from social.Error
* login: Check for errutil.Error and use public message
* Login: redirectURLWithErrorCookie for authn errors
Co-authored-by: Jo <joao.guerreiro@grafana.com>
* Sticky trace view header. Remove title from trace view container.
* Set background color of header as primary
* Remove search bar from trace view in dashboards when toggle is enabled
This commit fixes a bug in the $values variable in notification
templates when using Classic Conditions. Since Classic Conditions
are not multi-dimensional, the values of each series that exceeded
the condition should be available as a RefID and offset. For example,
B0, B1, etc. However, this bug meant that instead just a single
condition would be printed as B, not B0.
* Create historian metrics and dependency inject
* Record counter for total number of state transitions logged
* Track write failures
* Track current number of active write goroutines
* Record histogram of how long it takes to write history data
* Don't copy the registerer
* Adjust naming of write failures metric
* Introduce WritesTotal to complement WritesFailedTotal
* Measure TransitionsFailedTotal to complement TransitionsTotal
* Rename all to state_history
* Remove redundant Total suffix
* Increment totals all the time, not just on success
* Drop ActiveWriteGoroutines
* Drop PersistDuration in favor of WriteDuration
* Drop unused gauge
* Make writes and writesFailed per org
* Add metric indicating backend and a spot for future metadata
* Drop _batch_ from names and update help
* Add metric for bytes written
* Better pairing of total + failure metric updates
* Few tweaks to wording and naming
* Record info metric during composition
* Create fakeRequester and simple happy path test using it
* Blocking test for the full historian and test for happy path metrics
* Add tests for failure case metrics
* Smoke test for full annotation persistence
* Create test for metrics on annotation persistence, both happy and failing paths
* Address linter complaints
* More linter complaints
* Remove unnecessary whitespace
* Consistency improvements to help texts
* Update tests to match new descs
* Alerting: Add metrics for active receiver and integrations
Introduces metrics that allows us to track the number of configured receivers and integration in the Alertmanager for all orgs.
As a bonus, I realised that the alert reception metrics where not being exported nor collected. This does that too.
* WIP of creating new components to support the Search tab using TraceQL
* Search fields now require an ID. Added duration fields to new Search UI
* Distinguish static from dynamic fields. Added dynamic tags input
* Moved new search behind traceqlSearch feature flag. Added handling of different types of values to accurately wrap them in quotes when generating query.
* Hold search state in TempoQuery to leverage state in URL. Moved types to schema file
* Use a read only monaco editor to render a syntax highlighted generated query. Added tooltip to duration. Added query options section
* Support multiple values using the regex operator and multi input
* Delete dynamic filters
* Automatically select the regex op when multiple values are selected. Revert to previous operator when only one value is selected
* Added tests for SearchField component
* Added tests for the TraceQLSearch component
* Added tests for function that generates the query
* Fix merge conflicts
* Update test
* Replace Search tab when traceqlSearch feature flag is enabled. Limit operators for both name fields to =,!=,=~
* Disable clear button for values
* Changed delete and add buttons to AccessoryButton. Added descriptions to operators
* Remove duplicate test
* Added a prismjs grammar for traceql. Replaced read only query editor with syntax highlighted query. Removed spaces between tag operator and value when generating query.
* Fix support for custom values when isMulti is enabled in Select
* Use toOption function
* Geomap: Fix Zoom Bug
* Add handling for case where no segments created
* Simplify segment checks and pull logic into utils
* Rename pixel variables
* Roll back change to raw data response json
* update data source permissions instructions to match modern UI
* Apply suggestions from code review
---------
Co-authored-by: Christopher Moyer <35463610+chri2547@users.noreply.github.com>
* Clarify that enabling LDAP will create users by default when they log in
This proposed change to the doc was requested by a user in support ticket `79860`, as it was not clear to them that the OOTB behavior was for user accounts to be provisioned automatically in Grafana when signing in for the first time via LDAP.
* Update docs/sources/setup-grafana/configure-security/configure-authentication/ldap/index.md
Thanks!
Co-authored-by: Christopher Moyer <35463610+chri2547@users.noreply.github.com>
* fix boolean
Woops, `true` should be `false`
---------
Co-authored-by: Christopher Moyer <35463610+chri2547@users.noreply.github.com>
* add selected columns to table when select object is not in query model because of rawQuery
* handle * and SHOW raw queries
* handle metricFindQuery
* Update public/app/plugins/datasource/influxdb/response_parser.ts
Co-authored-by: ismail simsek <ismailsimsek09@gmail.com>
* Update public/app/plugins/datasource/influxdb/response_parser.ts
Co-authored-by: ismail simsek <ismailsimsek09@gmail.com>
* Update public/app/plugins/datasource/influxdb/response_parser.ts
Co-authored-by: ismail simsek <ismailsimsek09@gmail.com>
---------
Co-authored-by: ismail simsek <ismailsimsek09@gmail.com>
* remove state and refactor interface to IsDisabled
* update docs and span
* Update pkg/services/apikey/apikey.go
Co-authored-by: Alexander Zobnin <alexanderzobnin@gmail.com>
---------
Co-authored-by: Alexander Zobnin <alexanderzobnin@gmail.com>
* revert to using folder store from the resolvers
* fixing tests after revert
* api test fixes
---------
Co-authored-by: Kristin Laemmert <mildwonkey@users.noreply.github.com>
* fix: create temp user no longer sets ID to 0 for all users
The xorm tag added to the tempuser ID field caused xorm to create all temp users with ID 0. Removing that tag allows xorm to set the ID based on the database result instead. I also added a test which was failing before this.
Fixes#63995
* fix log samples being unsorted and multiple results when chunking
* use `SortDirection` enum
* changed to `sortDataFrame` to support other datasources than loki
* update tests
* change capitalization
* move analytics identifiers to backend
* implement hash function
* grab secret from env
* expose and retrieve intercom secret from config
* concat email with appUrl to ensure uniqueness
* revert to just using email
* Revert "revert to just using email"
This reverts commit 8f10f9b1bc.
* add docstring
* AuthN: add utility functions to handle response and redirect after
successful login
* API: Reuse utility functions for logins if authnService flag is enabled
* adds link for credit on ARG dashboard
* Update public/app/plugins/datasource/azuremonitor/dashboards/arg.json
Co-authored-by: Andreas Christou <andreas.christou@grafana.com>
---------
Co-authored-by: Andreas Christou <andreas.christou@grafana.com>
Adds manual CTA banner to this page so it can be indexed for SEO purposes. Current banner is being managed by our CTA tracking tool, which is not being indexed.
* Add known limitation regarding identical timestamps
Making it clear that expressions operating on multiple queries requires identical timestamps in order to work correctly.
Also, it seems slightly misleading to say that expressions are primarily used by Grafana Alerting, recommending that we change to slightly softer language since it is fairly common practice to use expressions for non-alerting use cases.
* fix linting
ran prettier for linting
* AzureMonitor: Fix query variable migration
Somehow the query object becomes "unwriteable" post 9.4. To workaround
this I clone the query object before doing any migrations which removes
the immutability and allows the migrations to function as they did.
Fixes#63943
* refactor deepClone out to keep object the same
* feat(plugins): introduce dashboard panel menu placement for adding menu items
* test: add test for getPanelMenu()
* added an unique identifier for each extension.
* added context to getPluginExtensions.
* wip
* Wip
* wiwip
* Wip
* feat: WWWIIIIPPPP 🧨
* Wip
* Renamed some of the types to align a bit better.
* added limit to how many extensions a plugin can register per placement.
* decreased number of items to 2
* will trim the lenght of titles to max 25 chars.
* wrapping configure function with error handling.
* added error handling for all scenarios.
* moved extension menu items to the bottom of the more sub menu.
* added tests for configuring the title.
* minor refactorings.
* changed so you need to specify the full path in package.json.
* wip
* removed unused type.
* big refactor to make things simpler and to centralize all configure error/validation handling.
* added missing import.
* fixed failing tests.
* fixed tests.
* revert(extensions): remove static extensions config in favour of registering via AppPlugin APIs
* removed the compose that didn't work for some reason.
* added tests just to verify that validation and error handling is tied together in configuration function.
* adding some more values to the context.
* draft validation.
* added missing tests for getPanelMenu.
* added more tests.
* refactor(extensions): move logic for validating extension link config to function
* Fixed ts errors.
* Update packages/grafana-data/src/types/app.ts
Co-authored-by: Levente Balogh <balogh.levente.hu@gmail.com>
* Update packages/grafana-runtime/src/services/pluginExtensions/extensions.test.ts
Co-authored-by: Levente Balogh <balogh.levente.hu@gmail.com>
* refactor(extensions): rename limiter -> pluginPlacementCount
* refactor(getpanelmenu): remove redundant continue statement
---------
Co-authored-by: Levente Balogh <balogh.levente.hu@gmail.com>
Co-authored-by: Marcus Andersson <marcus.andersson@grafana.com>
* chore(services): replace dependencies on dashboard store with dashboard service
This continues the backend service/store split by replacing dashboard store dependencies with service dependencies. the folder service remains the single exception for now; otherwise we'd have a dependency cycle between the folder and dashboard services. I have some ideas for that, but I'll take care of all the easy parts first.
While doing this, I identified and removed a number of unused arguments from the following functions:
NewFolderNameScopeResolver
NewFolderIDScopeResolver
NewFolderUIDScopeResolver
NewDashboardIDScopeResolver
NewDashboardUIDScopeResolver
resolveDashboardScope
I have a small enterprise PR to support this commit.
* lingering fmt
* Update dependency fs-extra to v11
* remove fs-extra since it's only used in toolkit
---------
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
* Context menu
* Flame graph context menu improvements
* Move context menu state into flame graph
* Simplify logic
* Add test and rename to ContextMenuData
* Range splitting: group metric and logs queries
* Range splitting: intercalate logs and metric queries when > 1 queries
* Range splitting: fix possibly undefined error and remove console log
* Range splitting: update test imports
* Range splitting: add unit tests for multiple queries
* Query splitting: use lodash partition function
* Chore: rename variable
* Chore: attempt to improve readability
* chore: remove export service POC from main
This is a POC and we'll see it, or something like it, again!
* remove frontend changes
---------
Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
This commit fixes a serious bug in Grafana 9.4.1 where on upgrade
a migration would pause all existing alert rules and change the
default value of the column to true.
* add: hide apikeys tab on start
* make use of store method
* added hiding of apikeys tab for new org creation
* missing err check
* removed unused files
* implemennted fake to make tests run
* move check for globalHideApikeys from org to admin
* refactor to remove the fake
* removed unused method calls for interface
* Update pkg/services/serviceaccounts/manager/service.go
Co-authored-by: Alexander Zobnin <alexanderzobnin@gmail.com>
* Update pkg/services/serviceaccounts/manager/service.go
Co-authored-by: Alexander Zobnin <alexanderzobnin@gmail.com>
* remove the checkglobal method
* removed duplicate global set const
* add count of apikeys for performance
* remove apikeys adding in UI
* added back deleted file
* added comment on component
* changed wording and copy for hiding and migrating service accounts
* refactor: remove migrationstatus in front/backend
This removes the migrationstatus state from the UI in favor of only
looking at the number of API keys to determine what to show to the user.
This simplifies the logic and makes less calls to the backend with each
page load. This was called both on the API keys page and the Service
accounts page.
- removes the state of migrationstatus from the UI
- removes the backend call
- removes the backend endpoint for migrationstatus
* Update pkg/services/apikey/apikeyimpl/xorm_store.go
Co-authored-by: Karl Persson <kalle.persson@grafana.com>
* changes the contet to also be primary
* change id of version for footer component
---------
Co-authored-by: Alexander Zobnin <alexanderzobnin@gmail.com>
Co-authored-by: Karl Persson <kalle.persson@grafana.com>
* Enable serving Swagger UI by default
It used to be served behind the `swaggerUi` feature toggle.
* Remove `swaggerUi` feature toggle
* Add docs and guidelines for updating swagger
* Apply suggestions from code review
Co-authored-by: Josh Hunt <joshhunt@users.noreply.github.com>
* Elasticsearch: Add processing of logs query to backend
* Add and fix tests
* Add snapshot tests
* Fix test in ES client
* Small updates, remove redundant logic
* Refactor setPreferredVisType to improve readability
* MVP of a new datasource picker
* Add datasource select history, naming DatasourceSelect -> DataSourceDrawer
* refactor cards
* Cleanup and fixing sort order for recents
* add feature flag
* fix feature flag name and use it
* Highlight selected
* Move new ds picker to core
* Restore original datasource picker
* Remove unused property
* update yarn.lock
* Rename folder, update codeowners
* add test for util functions
* Remove es-lint exception
* Change feature toggle description
* remove unnecessary if
Co-authored-by: Ivan Ortega Alba <ivanortegaalba@gmail.com>
* Make test a bit more clear
Co-authored-by: Ivan Ortega Alba <ivanortegaalba@gmail.com>
* Clean up api, filter once and before maps, minor code cleanup
* Fix prettier issue
---------
Co-authored-by: Ivan Ortega Alba <ivanortegaalba@gmail.com>
* show folder for dashboard, adjust how ancestors are displayed, clamp to single line
* fix keys
* better responsiveness
* use subtitle consistently
* use span instead of div
* Connections: redirects to data sources
If Data sources page is the only child of Your connections, then the
NavLandingPage doesn't really make sense.
* DataSourcesList: do not show add button twice
If there are no data sources configured, then the DataSourcesList page
shows a large CTA to add a data source. Therefore, the add new data
source button in the header is redundant, let's remove it from there
in this case.
* DataSources: redirect to Connections after delete
The primary place of the DataSourceList page is under Connections,
provided that the `dataConnectionsConsole` feature is turned on.
Therefore, let's redirect there after deleting a data source.
* Reworked header
* Remove toggle from merge
* Update test
* Update how span is retrived
* Tests
* Update tests
* Move new trace page header into its own component
* Remove tests already covered in TracePageHeader.test.tsx
* Update findHeaderTags
* Tooltip updates
* update ldap library and use go module path
* add TLS min version and accepted min TLS version
* set default min ver to library default
* set default min ver to library default
* add cipher list to toml
* Update pkg/services/ldap/settings.go
Co-authored-by: Karl Persson <kalle.persson@grafana.com>
* Apply suggestions from code review
Co-authored-by: Christopher Moyer <35463610+chri2547@users.noreply.github.com>
* lint
---------
Co-authored-by: Karl Persson <kalle.persson@grafana.com>
Co-authored-by: Christopher Moyer <35463610+chri2547@users.noreply.github.com>
* Setting: Remove global DisableLoginForm and add it to cfg
* Setting: Remove unused BasicAuthEnabled global
* Setting: Remove global OAuthAutoLogin and use from cfg
* Setting: Remove global AnonymousEnabled
* Setting: Remove global values for AuthProxy settings
* WIP
* feat: update CSS for long names
also adds broken href, to fix later
* Create correct link using CombinedRules
* Use link instead of button for alert link
* Updates from PR review
* Handle loading,haveResults and dispatched state for both promRules and rulerRules
---------
Co-authored-by: Gilles De Mey <gilles.de.mey@gmail.com>
* add prom query var editor with tests and migrations
* fix migration, now query not expr
* fix label_values migration
* remove comments
* fix label_values() variables order
* update UI and use more clear language
* fix tests
* use null coalescing operators
* allow users to query label values with label and metric if they have not set there flavor and version
* use enums instead of numbers for readability
* fix label&metrics switch
* update type in qv editor
* reuse datasource function to get all label names, getLabelNames(), prev named getTagKeys()
* use getLabelNames in the query var editor
* make label_values() variables label and metric more readable in the migration
* fix tooltip for label_values to remove API reference
* clean up tooltips and allow newlines in query_result function
* change function wording and exprType to query type/qryType for readability
* update prometheus query variable docs
* Update public/app/plugins/datasource/prometheus/components/VariableQueryEditor.tsx
Co-authored-by: Galen Kistler <109082771+gtk-grafana@users.noreply.github.com>
* handle jsonnet grafana as code variables
---------
Co-authored-by: Galen Kistler <109082771+gtk-grafana@users.noreply.github.com>
* support timeSeriesLong without transform
* move timeserieslong transform to the right spot
* add review suggestions for using types and moving options inline
* handle frames with different field names
* remove extra options
* fix org user always getting org id = 1 on auto assign false
* make tests explicit
* use correct cfg in service accounts
* fix api tests
* fix database test of ac
* fix InsertOrgUser returning affected rows as orgID
* Plugins CDN: Add support for different CDN root path
* Plugins CDN: Make frontendsettings return the correct CDN base path
* Update comments
* Fix version detection
* Undo frontend changes
* Fix system.js asset path construction
* fix(plugins): translate all plugin css asset paths loaded via cdn
* refactor(plugins): rename extractPluginNameVersionFromUrl and add comments
* Fix typo in comment
Co-authored-by: Will Browne <wbrowne@users.noreply.github.com>
* Hardcode CDN URL structure
/{id}/{version}/public/plugins/{id}/{assetPath} is not required anymore in the cdn url template config
---------
Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>
Co-authored-by: Will Browne <wbrowne@users.noreply.github.com>
* Set default query when changing data source or adding new alert query
* Set default query when creating new alert rule
* Set fefault query for cloud and recording rules
* Create hook for getting defaults in AlertRuleForm
* fixing tests
* Use conditionals with 'if' for more clarity and rename lazy to async
* Add loading indicator for default queries
* Fix tests
* Make newModel a sync method and fix tests error
* Use useAsync instead of useEffect for an async call
* Datasource Onboarding: Prevent flickering of onboarding page after first load
* add loading state to loadDatasources & refactor
* fix test
* avoid loading state when loading datasources on add
* fix test
* add explainer on why fetching datasources is needed
* Scenes: Updates to variables demo to include a collapsable scene to test scenario of part of scene containing a query runnner being inactive while a variable changes value
* Table: Fixes logic for when adhoc filters are shown
* Scene: Variables minor style fix
* rever unrelated change
* Update version
* Update
* Loki backend and client depend on a requester
* Instrument all requests to loki using weaveworks TimedClient
* Construct collector in metrics package
Docs: Update default value for geomaps disable_custom_baselayers option
The `disable_custom_baselayers` configuration option name and default
value were inverted in commit e604e69d93,
but the update to the description in the documentation was missed.
* Chore: Refactor Search/Folder view types into DashboardViewItem
* uid is not optional in api
* rename queryResultToNestedFolderItem function
* Fix error from locationInfo being empty
* change queryResultToViewItem to take view instead
* Fix sortMeta fields not showing on search cards
* Show correct parent for panel search results
* Add PDC docs
Add documentation for private data source connect, available in Cloud Pro and Advanced in closed preview
* Move PDC ssh key generation task
* edits throughout
* move image to media folder
---------
Co-authored-by: Chris Moyer <chris.moyer@grafana.com>
* refactor: move tests to a new file and clean up original file
* refactor: restructure test
* refactor: remove linting error
* refactor: change wording in test description
* Extract dirty translations from main
* Translate some variable phrases
* Translate nav bar
* Translate search/browse
* Fix header returning null
* Translate search results type
* fix test
* baldm0mma/chore/updateREADME/ update the readme for the statpanel
* baldm0mma/chore/updateREADME/ annos
* baldm0mma/chore/updateREADME/ update info with copy from docs
* baldm0mma/chore/updateREADME/ update caps
* baldm0mma/chore/updateREADME/ rem letter
* baldm0mma/chore/updateREADME/ update language
* baldm0mma/chore/updateREADME/ update spelling
* Revert functions within macros change
* Add tests for function and macro for mssql
* Remove macro support tests
---------
Co-authored-by: Oscar Kilhed <oscar.kilhed@grafana.com>
* Reorder documentation section to be first by depth, then alphabetically
This matches the organization described in the top of the CODEOWNERS
file.
Signed-off-by: Jack Baldry <jack.baldry@grafana.com>
* Update technical documentation CODEOWNERS to reflect areas of responsibility
@Eve832 is responsible for all docs not owned by another technical
writer.
@Eve832 and @GrafanaWriter are responsible for Administration, Data
sources, Explore, and Release notes.
@Eve and the plugins teams are responsible for developer plugins documentation.
@brendamuir is responsible for all alerting documentation.
@chri2547 is responsible for Fundamentals, Getting started,
Introduction, Setup Grafana, Upgrade guide, and What's new.
Signed-off-by: Jack Baldry <jack.baldry@grafana.com>
* Add explicit code ownership for /devenv/README.md
This was lost when the README.md pattern was made more strict.
Signed-off-by: Jack Baldry <jack.baldry@grafana.com>
* Add @josmperez to plugins reviews
---------
Signed-off-by: Jack Baldry <jack.baldry@grafana.com>
* add QueryGroup onAddQueryClick and onExpressionClick tests
* add test's for the query group component
- new query/expression should be expanded
- adds query/expression onclick
* add open data source help modal test
* add disabled expression test
* add query editor rows test
* rm unused attributes, rm renderScenario required override
* Update dependency rollup to v3
* build(rollup): update all rollup related deps to latest version
* chore(runtime): update peerDeps to match other package semver ranges
* chore(yarn): refresh lock file
* refactor(packages): migrate to esm for rollup@3 configs
* build(packages): remove unused rollup dependencies
---------
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>
* bring in source from database
* bring in transformations from database
* add regex transformations to scopevar
* Consolidate types, add better example, cleanup
* Add var only if match
* Change ScopedVar to not require text, do not leak transformation-made variables between links
* Add mappings and start implementing logfmt
* Add mappings and start implementing logfmt
* Remove mappings, turn off global regex
* Add example yaml and omit transformations if empty
* Fix the yaml
* Add logfmt transformation
* Cleanup transformations and yaml
* add transformation field to FE types and use it, safeStringify logfmt values
* Add tests, only safe stringify if non-string, fix bug with safe stringify where it would return empty string with false value
* Add test for transformation field
* Do not add null transformations object
* Break out transformation logic, add tests to backend code
* Fix lint errors I understand 😅
* Fix the backend lint error
* Remove unnecessary code and mark new Transformations object as internal
* Add support for named capture groups
* Remove type assertion
* Remove variable name from transformation
* Add test for overriding regexes
* Add back variable name field, but change to mapValue
* fix go api test
* Change transformation types to enum, add better provisioning checks for bad type name and format
* Check for expression with regex transformations
* WIP
* WIP
* Refactor
* Add tests
* Cleanup
* Fix whitespace
* Fix test and lint
* In snapshot tests update counter to be number
* Add boolean value for snapshot testing
* Update pkg/tsdb/elasticsearch/response_parser.go
Co-authored-by: Gábor Farkas <gabor.farkas@gmail.com>
* Update pkg/tsdb/elasticsearch/response_parser.go
Co-authored-by: Gábor Farkas <gabor.farkas@gmail.com>
* Use generic to reuse logic when creating fields
* Use nullable fields
* Fix lint
* WIP (#63272)
wip
* Fix snapshot test after we changed field types to nullable
---------
Co-authored-by: Gábor Farkas <gabor.farkas@gmail.com>
* feat: add logic to check for conflicting operator
* feat: display error if there is a conflict
* feat: check if label filter conflicts with other filters
* fix: remove capitalisation from "no data"
* test: add tests for isConflictingFilter function
* feat(labels): add validation for label matchers
* test(labels): add tests for isConflictingSelector
* refactor(labels): add suggestions from code review
* test(labels): add case for labels without op
* refactor(operations): add suggestions from code review
* feat(operations): display tooltip when you have conflicts
* fix: remove unused props from test
* fix: remove old test
* fix(labels): error message now displays in the correct location
* fix(operations): operations can be dragged, even with error
* fix: remove unused vars
* fix: failing tests
* fix(operations): hide error message whilst dragging
* refactor: use more appropriate variable naming
* refactor: add suggestions from code review
* perf: use array.some instead of array.find
* AuthN: Add flag to control org role syncs
* JWT: Only sync org roles if the skip flag for jwt is false
* LDAP: Only sync org role if skip flag for ldap is false
* OAuth: Skip org roles sync if no roles were provided by upstream service
* Grafana: Set SyncOrgRoles to true for authentication through proxy with grafana as backend
This commit fixes an incorrect comment in the Result struct in eval.go
that I had written some time ago. The comment now documents the
actual behaviour and content of this field.
* Stop and disable service on DEB package removal
The condition for this code to run applies on package removal only, not on upgrade or reinstall which generally invoke the prerm script as well.
Currently the service keeps running after package removal, failing at some point due to missing files. And if enabled, the attempted service start on every boot is doomed to fail.
If the invoke-rc.d command exists, it can be assumed that update-rc.d exists as well, as both are part of the same init-system-helpers package in dpkg distro repositories.
If neither systemd, nor the init system helper package is installed, the service is not tried to be disabled, since we cannot know a safe method to do so.
Compared to the postinst script, "set -e" is skipped here, since we do not run any command which is allowed to fail the whole package removal.
Signed-off-by: MichaIng <micha@dietpi.com>
* Add postrm script to package build
Signed-off-by: MichaIng <micha@dietpi.com>
* Remove redundant check
Co-authored-by: Dan Cech <dan@aussiedan.com>
---------
Signed-off-by: MichaIng <micha@dietpi.com>
Co-authored-by: Dan Cech <dan@aussiedan.com>
* add anon sessions package
* add usage stat fn
* implement count for cache
* add anonservice to authn broker
* lint
* add tests for remote cache count
* move anon service to services
* wrap tagging in goroutine
* make func used
* Alerting: get alert rules on faults (#61248)
Two functions used to fetch alert rules from DB are updated:
- GetAlertRulesForScheduling
- ListAlertRules
Rows are scanned one by one so good ones are returned.
Common Error is logged with indication how many
rules failed on deserialization.
Resolved: #61248
* updates from review comments
Use latest github.com/grafana/grafana-plugin-sdk-go which includes changes to the TypeVersion property (always present in JSON).
Also included is squtil changes: SQL util - allow using the database scan type for converters
* Create full directory path for testing docs
The previous command was useless as the old image already had the
/hugo/content/docs/grafana directory. The old image also had the
/hugo/content/docs/grafana/latest directory but the new image does
not.
Signed-off-by: Jack Baldry <jack.baldry@grafana.com>
* Modify a documentation file to to trigger docs PR tests
Signed-off-by: Jack Baldry <jack.baldry@grafana.com>
* Sentence case description
Co-authored-by: Ursula Kallio <ursula.kallio@grafana.com>
---------
Signed-off-by: Jack Baldry <jack.baldry@grafana.com>
Co-authored-by: Ursula Kallio <ursula.kallio@grafana.com>
* Update oapi library and thema
* Use fork commit to fix elasticsearch and cloudwatch generators
* Update thema
* Fixes
* Update thema with last fixes
* Sync
* Fix test
* Update thema and schemas
* Update thema
* AuthN: Update comments for ClientParams
* AuthN: Update flag name from SyncTeamMembers to SyncTeams
* UserSync: rename function and fix order of parameters so it is correct
* UserSync: Fix so we skip check if no authModule or authID is passed
* UserSync: move quota check to create user function
* UserSync: Move FetchSyncedUserHook to UserSync
* UserSync: Move last seen user hook to user sync service
* ApiKey: Implement last seen hook as a client hook instead
This commit adds filterLabels, filterLabelsRe, removeLabels, and
removeLabelsRe functions to templates for custom labels and annotations.
It allows for use cases such as removing all private labels.
This commit changes the Data struct in template.go to use Labels
instead of map[string]string. It changes how labels are printed
when using {{ .Labels }} from map[foo:bar bar:baz] to
foo=bar, bar=baz.
* Make the folder field read-only on the eval group modal
* Code cleanup
* Use useCombinedRuleNamespace to simplify groups fetching
* Fix groups filtering and label
* Revert go test changes, add folder button title
* Revert go changes
* Remove folder link when no url provided, fix messages
* Fix tests
* Fix lint
This commit changes how labels are printed in templates for custom
annotations and labels from map[foo:bar bar:baz] to foo=bar, bar=baz.
Labels are comma separated, and sorted in increasing order.
This commit moves templating from the state package to a sub-package
called template. This sub-package will be the logical package for
future ease-of-use improvements to templating custom annotations
and labels.
* fix any's in tests
* fix more any's in tests
* more test type fixes
* fixing any's in tests part 3
* more test type fixes
* fixing test any's p5
* some tidy up
* fix template_srv
* Use existing row struct instead of [2]string, add deserialization helper
* Replace Stream struct with stream struct which is exactly the same
* Drop unused status field
* Don't export queryRes and queryData
* Tests for custom marshalling
* Rename row fields to T and V for consistency with prometheus samples
* Rename row to sample
* structure dtos and private methods
* add basic LDAP service
* use LDAP service in ldap debug API
* lower non fatal error
* remove unused globals
* wip
* remove final globals
* fix tests to use cfg enabled
* restructure errors
* remove logger from globals
* use ldap service in authn
* use ldap service in context handler
* fix failed tests
* fix ldap middleware provides
* fix provides in auth_test.go
* add new scenario to config
* make workflow run on opened issues
* revert-dont run on opened
* action for newly opened issues
* move new action config
* remove opened from commands
* change name
* Update .github/workflows/issue-opened.yml
ty!
Co-authored-by: Timur Olzhabayev <timur.olzhabayev@grafana.com>
* make comment clearer
---------
Co-authored-by: Timur Olzhabayev <timur.olzhabayev@grafana.com>
* improved text
* prevent all labels removed
* use `structuredClone` instead of lodash
* update test
* get `structuredClone` in test?
* fix using structuredClone
* add prom query var editor with tests and migrations
* fix migration, now query not expr
* fix label_values migration
* remove comments
* fix label_values() variables order
* update UI and use more clear language
* fix tests
* use null coalescing operators
* allow users to query label values with label and metric if they have not set there flavor and version
* use enums instead of numbers for readability
* fix label&metrics switch
* update type in qv editor
* reuse datasource function to get all label names, getLabelNames(), prev named getTagKeys()
* use getLabelNames in the query var editor
* make label_values() variables label and metric more readable in the migration
* fix tooltip for label_values to remove API reference
* clean up tooltips and allow newlines in query_result function
* change function wording and exprType to query type/qryType for readability
* update prometheus query variable docs
* Update public/app/plugins/datasource/prometheus/components/VariableQueryEditor.tsx
Co-authored-by: Galen Kistler <109082771+gtk-grafana@users.noreply.github.com>
---------
Co-authored-by: Galen Kistler <109082771+gtk-grafana@users.noreply.github.com>
* Range splitting: range splitting function
* Range splitting: experiment with 1 hour splits
* Range splitting: reorganize code
* Range splitting: improve code readability and meaning
* Range splitting: add partition limit to prevent infinite loops
* Range splitting: add error handling
* Range splitting: disable for logs queries
* Range splitting: support any arbitrary time splitting + respect original from/to in the partition
* Chore: remove console logs
* Chore: delete unused import
* Range splitting: actually send requests in sequence
* Range splitting: do not split when > 1 query
* Range splitting: combine frames
* Chore: rename function
* split in reverse
* polished reversing
* keep reference to the right frame in the result
* Range splitting: change request state to Streaming
* Range splitting: fix moving only 1 unit of time instead of the provided one
* Chore: change default parameter to timeShift = 1
* Range splitting: do not split for range queqries
* Range splitting: add initial support for log queries
* Range splitting: do not use MutableDataFrame
It has bad performance and it's not required
* Chore: remove unused export
* Query Splitting: move to module
* loki: split: fix off-by-one error (#62966)
loki: split: fix off-by-one loop
* Range splitting: disable for logs volume queries
* Range splitting: combine any number of fields, not just hardcoded 2
* Range splitting: optimize frame-combining function
* Range splitting: further optimize
* Range splitting: combine frame length
* Range splitting: combine stats
* Range splitting: combine stats without assuming the same order
* Query splitting: catch and raise errors
* Range splitting: create feature flag
* Range splitting: implement feature flag
* Range splitting: add unit test for datasource query
* Range splitting: add basic test for runPartitionedQuery
* Range splitting: add unit test for resultLimitReached
* Range splitting: test frame merging
* Chore: fix unit test
---------
Co-authored-by: Sven Grossmann <svennergr@gmail.com>
Co-authored-by: Gábor Farkas <gabor.farkas@gmail.com>
The `rule_groups_rules` metric is currently defined and computed by `State`.
It makes more sense for this metric to be computed off of the configured rule
set, not based on the rule evaluation state. There could be an edge condition
where a rule does not have a state yet, and so is uncounted.
Additionally, we would like this metric (and others), to have a `rule_group`
label, and this is much easier to achieve if the metric is produced from the
`Scheduler` package.
* Remove Result field from AddDataSourceCommand
* Remove DatasourcesPermissionFilterQuery Result
* Remove GetDataSourceQuery Result
* Remove GetDataSourcesByTypeQuery Result
* Remove GetDataSourcesQuery Result
* Remove GetDefaultDataSourceQuery Result
* Remove UpdateDataSourceCommand Result
* drag files to dashboard
* use file name as panel title
* add file size limitation, file type limitation and error handling
* Refactor file parsing for code sharing
move accepted types and max size to file-import constants
show which file types are allowed in file type error
* update codeowners
* Adjust max size to 1mb
* Export `StatsCount` function
* Add new statKV each time a bundle is created
* Export bundle count
---------
Co-authored-by: Jo <joao.guerreiro@grafana.com>
* Navigation: Translate nav tree in store
* Remove usage of getNavTitle
* properly translate children
* add pubdash translation
* remove extraneous calls to translation in PageHeader
* empty commit
* correctly allow subtitle to be overrwitten (thank you tests!)
---------
Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
* Renamed target -> id and href -> path after feedback.
* fixed type issues in test page.
* chore(pluginschemajson): update extensions props target -> id
* this is the final.
* fixed typings...again...
---------
Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>
* fix(dashboard version service): add DashboardUID to query and responses
The DashboardUID was not populated in the response from Get and ListDashboardVersions. This adds the DashboardUID to the Get query (it was already in List) and populated the DashboardUID in the returned DashboardVersionDTOs.
* added extensions to plugin.json and exposing it via frontend settings.
* added extensions to the plugin.json schema.
* changing the extensions in frontend settings to a map instead of an array.
* wip
* feat(pluginregistry): begin wiring up registry
* feat(pluginextensions): prevent duplicate links and clean up
* added test case for link extensions.
* added tests and implemented the getPluginLink function.
* wip
* feat(pluginextensions): expose plugin extension registry
* fix(pluginextensions): appease the typescript gods post rename
* renamed file and will throw error if trying to call setExtensionsRegistry if trying to call it twice.
* added reafactorings.
* fixed failing test.
* minor refactorings to make sure we only include extensions if the app is enabled.
* fixed some nits.
* Update public/app/features/plugins/extensions/registry.test.ts
Co-authored-by: Levente Balogh <balogh.levente.hu@gmail.com>
* Update packages/grafana-runtime/src/services/pluginExtensions/registry.ts
Co-authored-by: Levente Balogh <balogh.levente.hu@gmail.com>
* Update packages/grafana-runtime/src/services/pluginExtensions/registry.ts
Co-authored-by: Levente Balogh <balogh.levente.hu@gmail.com>
* Update public/app/features/plugins/extensions/registry.test.ts
Co-authored-by: Levente Balogh <balogh.levente.hu@gmail.com>
* Moved types for extensions from data to runtime.
* added a small example on how you could consume link extensions.
* renamed after feedback from levi.
* updated the plugindef.cue.
* using the generated plugin def.
* added tests for apps and extensions.
* fixed linting issues.
* wip
* wip
* wip
* wip
* test(extensions): fix up failing tests
* feat(extensions): freeze registry extension arrays, include type in registry items
* added restrictions in the pugindef cue schema.
* wip
* added required fields.
* added key to uniquely identify each item.
* test(pluginextensions): align tests with implementation
* chore(schema): refresh reference.md
---------
Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>
Co-authored-by: Levente Balogh <balogh.levente.hu@gmail.com>
* add: deprecaation notice for overall setting
* add: deprecation notice for configuration files
* chore: update docs with deprecation notice
* refactor: change to note the new setting instead
* Update pkg/setting/setting.go
Co-authored-by: Gabriel MABILLE <gamab@users.noreply.github.com>
* refactor: based on review comments
---------
Co-authored-by: Gabriel MABILLE <gamab@users.noreply.github.com>
The new tokens are managed centrally and have a longer expiry.
Administrators of the grafanabot account will be
notified of the pending expiry and the secret can be rotated centrally
without the need for a repository administrator to update their
secrets.
The existing repository secrets can safely be removed. The tokens for
those secrets will be removed by the end of this week.
Signed-off-by: Jack Baldry <jack.baldry@grafana.com>
The GH_BOT_ACCESS_TOKEN has permissions beyond those required for
addToProject and other API commands that the issue_commands workflow uses.
The new token is set at an organization level so it does not require
repository administrators to rotate the token. It also has the minimal
classic PAT permissions to facilitate the workflow.
It has expiry but that expiry is reported via email to the engineering
organization and the IT Helpdesk have permissions to regenerate the
token when expiration is imminent.
Signed-off-by: Jack Baldry <jack.baldry@grafana.com>
* change error to warning, apply correct format
* Update pkg/services/ngalert/store/alertmanager.go
Co-authored-by: George Robinson <george.robinson@grafana.com>
* different wording and data
---------
Co-authored-by: George Robinson <george.robinson@grafana.com>
* Consolidate logs volume logic (full range and limited)
* Fix showing limited histogram message
* Test passing meta data to logs volume provider
* Improve readability
* Clean up types
* Move the comment back to the right place
* Improve readability
* Docs: Add Schema maturity docs
* Remove 'which category' section from maturity.md
Co-authored-by: sam boyer <sdboyer@grafana.com>
* Remove Maturity process guides from maturity.md
Co-authored-by: sam boyer <sdboyer@grafana.com>
* Remove Defaults and Field optionality from maturity.md
Co-authored-by: sam boyer <sdboyer@grafana.com>
* Remove MaybeRemove section from maturity.md
Co-authored-by: sam boyer <sdboyer@grafana.com>
* Remove Milestone 3 and 4 from maturity.md
Co-authored-by: sam boyer <sdboyer@grafana.com>
* Rearrange schema maturity docs
* Regenerate schema docs after merge with main
* Update Maturity docs headers, keep single h1
* Update wording in Schema docs
Co-authored-by: Tania <yalyna.ts@gmail.com>
* Regenerate docs after merge with main
---------
Co-authored-by: sam boyer <sdboyer@grafana.com>
Co-authored-by: Tania <yalyna.ts@gmail.com>
* fetch inherited folder scopes for search v2
* fix error and don't fetch parents for the general folder
* remove feature toggle check and lower log level
* add bundle registry service to avoid dependency cycles
* move user support bundle collector to user service
* move usage stat bundle implementation to usage stats
* add info for background service
* fix remaining imports
* whitespace
* docs: fix broken annotations link
Link to annotations section is broken because the section was never added. A placeholder for it was removed on this commit, but the link wasn't. This seems like the best place to point to.
* fix relref formatting
Co-authored-by: Christopher Moyer <35463610+chri2547@users.noreply.github.com>
* removed TODOs from tables
* prettier linting
---------
Co-authored-by: Christopher Moyer <35463610+chri2547@users.noreply.github.com>
* reorganize auth usage stats
* usage stat privilege elevators
* stat count of modified role
* cfg related info
* add authn anon client
* kv store
* ensure anon enabled is collected even if client is not registered
* fix usage stats test
* fix: add placeholder to loki query editor
* fix: use original placeholder
* refactor: extract set placeholder into seperate function
* fix: use correct monaco types
* revert: unwanted change from merge
* Update dependency eslint to v8.33.0
* update eslint sdk as well
---------
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
* New pfs impl
* Reached codegen parity with old system
* Update all models.cue inputs
* Rename all models.cue files
* Remove unused prefixfs
* Changes Queries->DataQuery schema interface
* Recodegen
* All tests passing, nearly good now
* Add SchemaInterface to kindsys props
* Add pascal name deriver
* Relocate plugin cue files again
* Clarify use of injected fields
* Remove unnecessary aliasing
* Move DataQuery into mudball
* Allow forcing ExpandReferences on go type generation
* Move DataQuery def into kindsys, add generator to copy it to common
* Fix copy generator to replace package name correctly
* Setup Cloudwatch data query schema
* Add go file
* Re-generate types
* Re-generate types
* Add missing files
* Re-generate docs
* Add MetricStat
* Add CloudWatchAnnotationQuery
* Remove DataQuery extension
* Fixes
* Sync with main
* Update report
---------
Co-authored-by: sam boyer <sdboyer@grafana.com>
* Initial schema
- Add types based off of current frontend
* Rename and field-level comments
* Update report and regenerate files
* Rename frontend Azure folder
- Doing this for consistency and to ensure code-generation works
- Update betterer results due to file renames
* Remove default and add back enum vals that I deleted
* Set workspace prop as optional
* Replace template variable types
* Connect frontend query types
- Keep properties optional for now to avoid major changes
- Rename AzureMetricResource
- Correctly use ResultFormat
* Add TSVeneer decorator
* Update schema
* Update type
* Update CODEOWNERS
* Fix gen-cue issue
* Fix backend test
* Fix e2e test
* Update code coverage
* Remove references to old Azure Monitor path
* Review
* Regen files
* Adds a description field to plugin.json's pages:role field
There's no description of what a page object's "role" setting does. It
controls whether a page will appear in the navigation menu for a user
with a given role.
* Update plugindef.cue with comments to match documentation.
* make gen-cue
* user essentials mob! 🔱
lastFile:public/app/features/search/state/SearchStateManager.ts
* user essentials mob! 🔱
lastFile:public/app/features/search/page/components/ActionRow.tsx
* user essentials mob! 🔱
* remove searchSort state from localStorage when cleared
---------
Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
Co-authored-by: Joao Silva <joao.silva@grafana.com>
* AuthN: Add HookClient interface
* AuthN: Check if client implement authn.HookClient and call the hook if
it does
* AuthN: Convert refresh token hook into a client hook
* feat(debugpanel): schematizing debug panel plugin
* delete old types and update imports to new generated schema
* update to experimental
* derived counters, fix options key name
* num to int
* chore(debugpanel): update ts imports post type rename
* chore(kindsys): refresh report.json
* migrate UpdateCounters back to runtime
* merge with main
---------
Co-authored-by: Will Browne <will.browne@grafana.com>
Co-authored-by: sam boyer <sdboyer@grafana.com>
* fix: use case-sensitive routes for Connections
The reason to do this is to have the backend route-guards work properly.
(The backend route guards are case-sensitive, thus if the FE would serve
the case-insensitive version, then the backend route guards could be bypassed.)
* tests: update the tests
* *Create Caching Config interface and OSS impl
*Create front-end facing DS Cache config
*Populate Caching Config on Datasource DTO
*Update OSS wire deps
* fix unit test
* handle query caching TTL override on the frontend
* Make sure the override works with pubdash
* move caching config to the right place in the ds info
* move caching config logic to enterprise index hook
* move queryCachingTTL to pubdash query payload
* Remove from metadata (not needed)
* rename struct and add comment
* remove invalid wire dependency
* manual revert of 395c74b
* fix frontend test
* fix backend test
* fix tests for real this time
* truly fix frontend test
* fix back end unit test for real
* Alerting: implement loki query for alert state history
* extract selector building
* add unit tests for selector creation
* backup
* give selectors their own type
* build dataframe
* add some tests
* small changes after manual testing
* use struct client
* golint
* more golint
* Make RuleUID optional for Loki implementation
* Drop initial assumption that we only have one series
* Pare down to three columns, fix timestamp overflows, improve failure cases in loki responses
* Embed structred log lines in the dataframe as objects rather than json strings
* Include state history label filter
* Remove dead code
---------
Co-authored-by: Alex Weaver <weaver.alex.d@gmail.com>
* Start work on allowing certain resources to pass through Cache-Control headers.
---------
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
* Alerting: Fix template validation in provisioning api
Fix issue where provisioning API accepts a malformed template having extra
text outside of definition block and template name matching definition name.
* Mark AM configuration as applied
* add missing checks, make linter happy
* fix deadlock, mark as valid on save and on load
* mark configurations only if needed
* check error after applyConfig()
* code review comments
* code review changes
* more code review changes
* clean HistoricConfigFromAlertConfig function
* Define endpoint and generate
* Wire up and register endpoint
* Cleanup, define authorization
* Forgot the leading slash
* Wire up query and SignedInUser
* Wire up timerange query params
* Add todo for label queries
* Drop comment
* Update path to rules subtree
* Extract label merge, add test file
* Extract error/NoData to first class fields, remove a layer from values
* Include dashUID and panelID as line-level fields
* Drop unnecessary object receiver
* Add tests for stream building
* Drop NoData field from log lines
* baldm0mma/bug-62410/ remove function incorrectly calculating table height
* baldm0mma/bug-62410/ base extended row on basic footer height, and not header height
* Nested folders: Do not skip integration tests
* SQLStore: Fix folder migration
It reduces the length of the title column to be equal with the respective
dashboard column.
This change exposes more metrics from the embedded Alertmanager, which are
valuable for troubleshooting Alertmanager operation particularly in HA setups.
```
grafana_alerting_notifications_total
grafana_alerting_notifications_failed_total
grafana_alerting_notification_requests_total
grafana_alerting_notification_requests_failed_total
grafana_alerting_notification_latency_seconds
grafana_alerting_nflog_gc_duration_seconds
grafana_alerting_nflog_snapshot_duration_seconds
grafana_alerting_nflog_snapshot_size_bytes
grafana_alerting_nflog_queries_total
grafana_alerting_nflog_query_errors_total
grafana_alerting_nflog_query_duration_seconds
grafana_alerting_nflog_gossip_messages_propagated_total
grafana_alerting_dispatcher_aggregation_groups
grafana_alerting_dispatcher_alert_processing_duration_seconds
```
Note that `alertmanager_dispatcher_aggregation_group_limit_reached_total` is
explicitly not exposed, as the group limit metrics are not enabled.
* Keybindings: No global keybindings on chromeless pages
* simplify condition
* Refactoring
* Align name and file
* Move logic into AppChrome
* minor fix
* Update Page.tsx
* Fixing test
* Fixed tests
* More fixes
* Fixed more tests
* Fixing final test
* Fixed search in old nav
* remove result field from alert notification commands and queries
* fix a few more tests
* ok, linter
* remove alert result fields
* fix api calls
* et tu, linter
* Elasticsearch: Implement schema for query
* Comment out types I am not sure how to do
* Manually fix typing for PipelineMetricAggregationWithMultipleBucketPaths and BasePipelineMetricAggregation
* Import types to types.ts to have single source of truth
* Cleanup, reorder
* Remove unnecesary Schema.
* Fix test
* Refactor
* Add steps in the pipeline for cloning enterprise when running PR tests.
* Removed enterprise-check from the github action workflows, and removed it from the codeowners file.
* fix: label filter expression treats int as string
* refactor: labelFilterRenderer
* test: add tests to labelFilterRenderer
* refactor: use backticks based on the operator not the value
* test: labelFilterRenderer uses the correct value type based on the operator
* test: use it.every rather than having multiple repetitive tests
* Add duplicate action to templates table
Co-authored-by: Virginia Cepeda <virginia.cepeda@grafana.com>
* Move duplicate icon, and remove provenance when rendering TemplateForm
* Create generic generateCopiedName method to avoid duplication and use it also in the CloneRuleEditor
* Use 'Copy' for duplicating templates and cloning alert rules
* Improve updating the template content with new unique define values when copying
Co-authored-by: Konrad Lalik <konradlalik@gmail.com>
* Fix typo
---------
Co-authored-by: Virginia Cepeda <virginia.cepeda@grafana.com>
Co-authored-by: Konrad Lalik <konradlalik@gmail.com>
* Update dependency comlink to v4.4.0
* explicitly mark the error as unknown
---------
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
* Add is_paused attr to the POST alert rule group endpoint
* Add is_paused to alerting API POST alert rule group
* Fixed tests
* Add is_paused to alerting gettable endpoints
* Fix integration tests
* Alerting: allow to pause existing rules (#62401)
* Display Pause Rule switch in Editing Rule form
* add isPaused property to form interface and dto
* map isPaused prop with is_paused value from DTO
Also update test snapshots
* Append '(Paused)' text on alert list state column when appropriate
* Change Switch styles according to discussion with UX
Also adding a tooltip with info what this means
* Adjust styles
* Fix alignment and isPaused type definition
Co-authored-by: gillesdemey <gilles.de.mey@gmail.com>
* Fix test
* Fix test
* Fix RuleList test
---------
Co-authored-by: gillesdemey <gilles.de.mey@gmail.com>
* wip
* Fix tests and add comments to clarify AlertRuleWithOptionals
* Fix one more test
* Fix tests
* Fix typo in comment
* Fix alert rule(s) cannot be paused via API
* Add integration tests for alerting api pausing flow
* Remove duplicated integration test
---------
Co-authored-by: Virginia Cepeda <virginia.cepeda@grafana.com>
Co-authored-by: gillesdemey <gilles.de.mey@gmail.com>
Co-authored-by: George Robinson <george.robinson@grafana.com>
* Update dependency @rushstack/node-core-library to v3.54.0
* do we even need this anymore?
---------
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
* SplitOpen: Update API to accept multiple queries
* Explore: Deprecate query in SplitOpenOptions and add queries
* Use queries in log samples
* Fix test
* QueryHistory: Improve handling of mixed datasource entries
* remove todo
* remove todo
* fix comment submit test
* disable running queries if at least one doesn't have a datasource
* remove unnecessary code
* add tests for diabled buttons state
* PanelChrome: Add transparent displayMode
* Remove comment
* Fixes to storybook and new example
* no background on TitleItem
---------
Co-authored-by: polinaboneva <polina.boneva@grafana.com>
* Create cue file and gen ts/go types
* Use generated schema in ts/go
* Run make den-cue to update report
* Manually extend Phlare query
* Updates
* Add default queryType
* Run make gen-cue to Update report.json
* Kindsys: Replace DeclForGen with kindsys.Kind
DeclForGen was always unnecessary - it just wasn't obvious on initial
implementation, when we were focused on generating unique types for each
core kind. This removes it, considerably simplifying interactions with
kindsys - virtually everything now just relies on kindsys.Kind and its
derived interfaces.
* Removed unused jenny
* Rename params in jennies
* Fix json serialization of state values
* Simplify two of the tests
* Fix linter complaint
* Don't return error if we fail to look up dashboard, just log it and move on
* Address linter complaint
* Config: Make frontend settings a struct rather than map
remove frontend settings to setting package
remove frontend settings struct to dtos package
rearrange structs to avoid cycles
rename getFrontendSettings fn
omitempty
fix login test
fix middleware test
* wip some enterprise types
* cleanup, moved structs from enterprise
* ci
* Use suggested value for uid
* update the snapshot
* use __expr__
* replace all -100 with __expr__
* update snapshot
* more changes
* revert redundant change
* Use expr.DatasourceUID where it's possible
* generate files
* extend IsInherited function to work for nested folders
* add tests
* update tests and logic
* process inherited permissions seprately to correctly grey them out in the frontend
* SQL: toRawSQL required and escape table
* Fix autocomplete for MySQL
* Change the way we escape for builder
* Rework escape ident to be smart instead
* Fix A11y for alias
* Add first e2e test
* Add test for code editor
* Add doc
* Review comments
* Move functions to sqlUtil
* Use dbName in jsonData instead of database
* Use dbName in instead of database
* Remove database fields and define dbName instead
* Fix tests
* set database field as empty string
* Tempo data query wip
* Replace TempoQuery with new type from schema
* Added some documentation for each DataQuery field
* Change limit type from number to int64
* Use TempoDataQuery instead of local model in the backend
* Update report.json
* all panel icons are 16x16 in size; allow ToolbarButton to have its icon size set from outside;
* use TitleItem for streaming too, so that the style of focus-visible is the same
* allow menu icon to be visible when panel is focused
* remove some styling of title icons in panel header
* panel alert notices are too big
* PanelHeaderNotice: Fix styling issue with background and hover when
feature toggle is not enable
---------
Co-authored-by: Alexandra Vargas <alexa1866@gmail.com>
* feat: add condition
* refactor: clea up
* refactor: remove changes and add my solution as comment
* feat: add test
* refactor: test preparation
* refactor: finish test prep and remove planned changed from addQueryRow()
* refactor: finish first test
* refactor: add required props after removing any (not complete)
* refactor: replace props and clean up
* refactor: add another test
* refactor: extend tests with datasourceInstance
* refactor: add test for mixed ds enabled
* refactor: remove typescript errors
* feat: add first attempt of a test for generateEmptyQuery()
* feat: setup first test for generateEmptyQuery()
* refactor: remove typescript errors
* feat: add another test for generateEmptyQuery()
* refactor: add some assertions
* refactor: restructure tests
* refactor: remove doubled code
* refactor: remove typescript errors
* refactor: remove mocking mistake and add test
* refactor: remove mocking mistakes
* refactor: repair mock for feature toggle
* refactor: clean up
* refactor: changes from code review
* add .TemplateData property to data in order to populate template <title> tags with the compiled subject value
* update all templates
* re-enable integration test and update implementation to check changes
* chore: fmt
* add HiddenSubject template func and update text templates
* slight performance improvement, only execute subject template once
* update template I missed
---------
Co-authored-by: Gilles De Mey <gilles.de.mey@gmail.com>
**What is this feature?**
Simply a documentation update.
**Why do we need this feature?**
Clarify the doc, so people don't waste time integrating the wrong key,
e.g. #8979, #9036, https://community.librenms.org/t/19013
**Who is this feature for?**
Developers doing a PagerDuty integration.
* Allow pausing alerts from provisioning
* Update swagger
* Add IsPaused to provision export endpoints
* Add pause field in sample.yml
* Add exception for reset state in first loop iteration of scheduler if rule is paused
* Update provision definition and swagger docs
* Fix provisioning export tests
* Suggestion: Simplify if condition
* Add more context to a comment
* add nested folder scope inheritance to managed permission services
* add a more specific erorr
* remove circular dependencies
* use errutil for returning erorr
* fix tests
* fix tests
* define a new error in ac package
* remove unnecessary onClick from title element
* associate icon label with title + fix unit tests
* remove cursor: pointer;
* remove link color from title as it's no longer clickable
* remove useless aria-label
* stop incorrectly marking title as a ReactNode - it's just a string
* AuthN: Update signature of redirect client and RedirectURL function
* OAuth: use authn.Service to perform oauth authentication and login if feature toggle is enabled
* AuthN: register oauth clients
* AuthN: set auth module metadata
* AuthN: add logs for failed login attempts
* AuthN: Don't use enable disabled setting
* OAuth: only run hooks when authnService feature toggle is disabled
* OAuth: Add function to handle oauth errors from authn.Service
2023-01-30 12:45:04 +01:00
3557 changed files with 99933 additions and 84641 deletions
about: Create an issue for a chore needing completion
labels: 'type: chore'
---
<!--
Please use this template to create your chore issue. You can use this template if you spot an out-of-date README, discover a misspelling, or happen upon a deeply nested 7-layer for-loop that could be better handled another way. Please use this template for your non-bug related fixes/updates/refactors.
- Questions should be posted to: https://community.grafana.com
- Use query inspector to troubleshoot issues: https://bit.ly/2XNF6YS
- How to record and attach gif: https://bit.ly/2Mi8T6K
@@ -42,5 +42,9 @@ Usage: "Fixes #<issue number>", or "Fixes (paste link of issue)"
Fixes #
**Special notes for your reviewer**:
**Special notes for your reviewer:**
Please check that:
- [ ] It works as expected from a user's perspective.
- [ ] If this is a pre-GA feature, it is behind a feature toggle.
- [ ] The docs are updated, and if this is a [notable improvement](https://grafana.com/docs/writers-toolkit/writing-guide/contribute-release-notes/#how-to-determine-if-content-belongs-in-a-whats-new-document), it's added to our [What's New](https://grafana.com/docs/writers-toolkit/writing-guide/contribute-release-notes/) doc.
"comment":" please add one or more appropriate labels. Here are some tips:\r\n\r\n- if you are making an issue, TODO, or reminder for yourself or your team, please add one label that best describes the product or feature area. Please also add the issue to your project board. :rocket:\r\n\r\n- if you are making an issue for any other reason (docs typo, you found a bug, etc), please add at least one label that best describes the product or feature that you are discussing (e.g. `area/alerting`, `datasource/loki`, `type/docs`, `type/bug`, etc). [Our issue triage](https://github.com/grafana/grafana/blob/main/ISSUE_TRIAGE.md#3-categorizing-an-issue) doc also provides additional guidance on labeling. :rocket:\r\n\r\n Thank you! :heart:"
"io/ioutil"="Deprecated: As of Go 1.16, the same functionality is now provided by package io or package os, and those implementations should be preferred in new code. See the specific function documentation for details."
"gopkg.in/yaml.v2"="Grafana packages are not allowed to depend on gopkg.in/yaml.v2 as gopkg.in/yaml.v3 is now available"
"github.com/pkg/errors"="Deprecated: Go 1.13 supports the functionality provided by pkg/errors in the standard library."
"github.com/xorcare/pointer"="Use pkg/util.Pointer instead, which is a generic one-liner alternative"
"github.com/gofrs/uuid"="Use github.com/google/uuid instead, which we already depend on."
- **Alerting:** Update scheduler to receive rule updates only from database. [#64780](https://github.com/grafana/grafana/pull/64780), [@yuri-tceretian](https://github.com/yuri-tceretian)
- **Security:** Fixes for CVE-2023-1410. [#65278](https://github.com/grafana/grafana/pull/65278), [@itsmylife](https://github.com/itsmylife)
### Breaking changes
The InfluxDB backend migration feature toggle (influxdbBackendMigration) has been reintroduced in this version as issues were discovered with backend processing of InfluxDB data. Unless this feature toggle is enabled, all InfluxDB data will be parsed in the frontend. This frontend processing is the default behavior.
In Grafana 9.4.4, InfluxDB data parsing started to be handled in the backend. If you have upgraded to 9.4.4 and then added new transformations on InfluxDB data, those panels will fail to render. To resolve this either:
- Remove the affected panel and re-create it
- Edit the `time` field as `Time` in `panel.json` or `dashboard.json` Issue [#64842](https://github.com/grafana/grafana/issues/64842)
<!-- 9.4.7 END -->
<!-- 9.4.3 START -->
# 9.4.3 (2023-03-02)
@@ -346,6 +365,36 @@ Sentry frontend logging provider will be removed with next major version. Issue
- **Toolkit:** Deprecate all plugin related commands. [#60290](https://github.com/grafana/grafana/pull/60290), [@academo](https://github.com/academo)
- **Alerting:** Update scheduler to receive rule updates only from database. [#64662](https://github.com/grafana/grafana/pull/64662), [@yuri-tceretian](https://github.com/yuri-tceretian)
- **Chore:** Update Grafana to use Alertmanager v0.25.1-0.20230308154952-78fedf89728b. [#64784](https://github.com/grafana/grafana/pull/64784), [@yuri-tceretian](https://github.com/yuri-tceretian)
<!-- 9.3.11 END -->
<!-- 9.3.8 START -->
# 9.3.8 (2023-02-28)
<!-- 9.3.8 END -->
<!-- 9.3.7 START -->
# 9.3.7 (2023-02-28)
### Bug fixes
- **Alerting:** Validate that tags are 100 characters or less. [#62335](https://github.com/grafana/grafana/pull/62335), [@grobinson-grafana](https://github.com/grobinson-grafana)
- **Expressions:** Fixes the issue showing expressions editor. [#62510](https://github.com/grafana/grafana/pull/62510), [@itsmylife](https://github.com/itsmylife)
- **Logs:** Fix stats not being updated when log results change. [#62317](https://github.com/grafana/grafana/pull/62317), [@svennergr](https://github.com/svennergr)
- **Plugins:** Fix circular reference in customOptions leading to MarshalJSON errors. [#62328](https://github.com/grafana/grafana/pull/62328), [@yoziru](https://github.com/yoziru)
- **Time Series Panel:** Fix legend text selection in Firefox. [#60809](https://github.com/grafana/grafana/pull/60809), [@codeincarnate](https://github.com/codeincarnate)
<!-- 9.3.7 END -->
<!-- 9.4.0-beta1 END -->
<!-- 9.3.6 START -->
@@ -673,6 +722,16 @@ The following functions and classes related to logs are deprecated in the `grafa
@@ -2355,6 +2414,18 @@ In the Loki data source, for consistency and performance reasons, we changed how
The dependency to [grafana/aws-sdk](https://github.com/grafana/grafana-aws-sdk-react) is moved from [grafana/ui](https://github.com/grafana/grafana/blob/main/packages/grafana-ui/package.json) to the plugin. This means that any plugin that use SIGV4 auth need to pass a SIGV4 editor component as a prop to the `DataSourceHttpSettings` component. Issue [#43559](https://github.com/grafana/grafana/issues/43559)
# Limits the number of rows that Grafana will process from SQL data sources.
row_limit=1000000
# Sets a custom value for the `User-Agent` header for outgoing data proxy requests. If empty, the default value is `Grafana/<BuildVersion>` (for example `Grafana/9.0.0`).
# Enable the Unified Alerting sub-system and interface. When enabled we'll migrate all of your alert rules and notification channels to the new system. New alert rules will be created and your notification channels will be converted into an Alertmanager configuration. Previous data is preserved to enable backwards compatibility but new data is removed when switching. When this configuration section and flag are not defined, the state is defined at runtime. See the documentation for more details.
# Limits the number of rows that Grafana will process from SQL data sources.
;row_limit = 1000000
# Sets a custom value for the `User-Agent` header for outgoing data proxy requests. If empty, the default value is `Grafana/<BuildVersion>` (for example `Grafana/9.0.0`).
#Enable the Unified Alerting sub-system and interface. When enabled we'll migrate all of your alert rules and notification channels to the new system. New alert rules will be created and your notification channels will be converted into an Alertmanager configuration. Previous data is preserved to enable backwards compatibility but new data is removed.```
| /pkg/api | HTTP handlers and routing. Almost all handler funcs are global which is something we would like to improve in the future. Handlers should be associated with a struct that refers to all dependencies. |
| /pkg/cmd | The binaries that we build: grafana-server and grafana-cli. |
| /pkg/components | A mix of third-party packages and packages we have implemented ourselves. Includes our packages that have out-grown the util package and don't naturally belong somewhere else. |
| /pkg/infra | Packages in infra should be packages that are used in multiple places in Grafana without knowing anything about the Grafana domain. |
| /pkg/services | Packages in services are responsible for persisting domain objects and manage the relationship between domain objects. Services should communicate with each other using DI when possible. Most of Grafana's codebase still relies on global state for this. Any new features going forward should use DI. |
| /pkg/tsdb | All backend implementations of the data sources in Grafana. Used by both Grafana's frontend and alerting. |
| /pkg/util | Small helper functions that are used in multiple parts of the codebase. Many functions are placed directly in the util folders which is something we want to avoid. Its better to give the util function a more descriptive package name. Ex `errutil`. |
| /pkg/bus | The bus is described in more details under [Communication](/contribute/backend/communication.md) |
| /pkg/models | This is where we keep our domain model. This package should not depend on any package outside standard library. It does contain some references within Grafana but that is something we should avoid going forward. |
| /pkg/registry | Package for managing services. |
| /pkg/services/alerting | Grafana's alerting services. The alerting engine runs in a separate goroutine and shouldn't depend on anything else within Grafana. |
| /pkg/services/sqlstore | Currently where the database logic resides. |
| /pkg/setting | Anything related to Grafana global configuration should be dealt with in this package. |
Reviewers who review large changes should additionally make a habit out
of familiarizing themselves with the content of
[/contribute/backend](/contribute/backend) from time to time.
## Dependency management
Refer to [UPGRADING_DEPENDENCIES.md](https://github.com/grafana/grafana/blob/main/UPGRADING_DEPENDENCIES.md).
## Ongoing refactoring
These issues are not something we want to address all at once but something we will improve incrementally. Since Grafana is released at a regular schedule the preferred approach is to do this in batches. Not only is it easier to review, but it also reduces the risk of conflicts when cherry-picking fixes from main to release branches. Please try to submit changes that span multiple locations at the end of the release cycle. We prefer to wait until the end because we make fewer patch releases at the end of the release cycle, so there are fewer opportunities for complications.
### Global state
Global state makes testing and debugging software harder and it's something we want to avoid when possible. Unfortunately, there is quite a lot of global state in Grafana.
We want to migrate away from this by using the `inject` package to wire up all dependencies either in `pkg/cmd/grafana-server/main.go` or self-registering using `registry.RegisterService` ex https://github.com/grafana/grafana/blob/main/pkg/services/cleanup/cleanup.go#L25.
### Limit the use of the init() function
Only use the init() function to register services/implementations.
### Settings refactoring
The plan is to move all settings to from package level vars in settings package to the [setting.Cfg](https://github.com/grafana/grafana/blob/df917663e6f358a076ed3daa9b199412e95c11f4/pkg/setting/setting.go#L210) struct. To access the settings, services and components can inject this setting.Cfg struct:
We want to migrate away from using GoConvey. Instead, we want to use stdlib testing, because it's the most common approach in the Go community and we think it will be easier for new contributors. Read more about how we want to write tests in the [style guide](/contribute/backend/style-guide.md).
### Refactor SqlStore
The `sqlstore` handlers all use a global xorm engine variable. Refactor them to use the `SqlStore` instance.
### Avoid global HTTP handler functions
Refactor HTTP handlers so that the handler methods are on the HttpServer instance or a more detailed handler struct. E.g (AuthHandler). This ensures they get access to HttpServer service dependencies (and Cfg object) and can avoid global state.
### Date comparison
Store newly introduced date columns in the database as epochs if they require date comparison. This permits a unified approach for comparing dates against all the supported databases instead of handling dates differently for each database. Also, by comparing epochs, we no longer need error pruning transformations to and from other time zones.
### Avoid use of the simplejson package
Use of the `simplejson` package (`pkg/components/simplejson`) in place of types (Go structs) results in code that is difficult to maintain. Instead, create types for objects and use the Go standard library's [`encoding/json`](https://golang.org/pkg/encoding/json/) package.
### Provisionable\*
All new features that require state should be possible to configure using config files. For example:
Today its only possible to provision data sources and dashboards but this is something we want to support all over Grafana.
### Use context.Context "everywhere"
The package [context](https://golang.org/pkg/context/) should be used and propagated through all the layers of the code. For example the `context.Context` of an incoming API request should be propagated to any other layers being used such as the bus, service and database layers. Utility functions/methods normally doesn't need `context.Context` To follow best practices, any function/method that receives a context.Context argument should receive it as its first argument.
To be able to solve certain problems and/or implement and support certain features making sure that `context.Context` is passed down through all layers of the code is vital. Being able to provide contextual information for the full life-cycle of an API request allows us to use contextual logging, provide contextual information about the authenticated user, create multiple spans for a distributed trace of service calls and database queries etc.
Code should use `context.TODO` when it's unclear which Context to use or it is not yet available (because the surrounding function has not yet been extended to accept a `context.Context` argument).
More details in [Services](/contribute/backend/services.md), [Communication](/contribute/backend/communication.md) and [Database](/contribute/backend/database.md).
| Proposed | The practice has been proposed and been positively received by the Grafana team. Following the proposal is a discretionary choice for developers. |
| Ongoing, active | The practice is actively being worked on. New code should adhere to the practice where at all possible. |
| Ongoing, passive | There is no immediate active work on refactoring old code. New code should adhere to the practice where at all possible. |
| Completed | The work has been done and there is no, or negligible, legacy code left that need refactoring. New code must adhere to the practice. |
| Abandoned | The practice has no longer any active ongoing work and new code don't need to comply with the practice described. |
## 1 - Idiomatic Grafana code should be idiomatic Go code
**Status:** Ongoing, passive.
It'll be easier for contributors to start contributing to Grafana if our
code is easily understandable. When there isn't a more specific Grafana
recommended practice, we recommend following the practices as put forth
by the Go project for development of Go code or the Go compiler itself
when applicable.
The first resource we recommend everyone developing Grafana's backend to
skim is "[Effective Go](https://golang.org/doc/effective_go.html)",
which isn't updated to reflect more recent changes since Go was
initially released but remain a good source for understanding the
general differences between Go and other languages.
Secondly, the guidelines for [Code Review Comments](https://github.com/golang/go/wiki/CodeReviewComments)
for the Go compiler can mostly be applied directly to the Grafana
codebase. There are idiosyncrasies in Grafana such as interfaces living
closer to its declaration than to its users for services and don't
enforce documentation of public declarations (prioritize high coverage
of documentation aimed at end-users over documenting internals in the
Global state makes testing and debugging software harder, and it's something we want to avoid when possible. Unfortunately, there is quite a lot of global state in Grafana.
We want to migrate away from this by using
[Wire](https://github.com/google/wire) and dependency injection to pack
## 101 - Limit the use of the init() function
**State:** Ongoing, passive.
Only use the init() function to register services/implementations.
## 102 - Settings refactoring
**State:** Ongoing, passive.
The plan is to move all settings to from package level vars in settings package to the [setting.Cfg](https://github.com/grafana/grafana/blob/df917663e6f358a076ed3daa9b199412e95c11f4/pkg/setting/setting.go#L210) struct. To access the settings, services and components can inject this setting.Cfg struct:
We want to migrate away from using GoConvey. Instead, we want to use
stdlib testing with [testify](https://github.com/stretchr/testify),
because it's the most common approach in the Go community, and we think
it will be easier for new contributors. Read more about how we want to
write tests in the [style guide](/contribute/backend/style-guide.md).
## 104 - Refactor SqlStore
**State:** Completed.
The `sqlstore` handlers all use a global xorm engine variable. Refactor them to use the `SqlStore` instance.
## 105 - Avoid global HTTP handler functions
**State:** Ongoing, passive.
Refactor HTTP handlers so that the handler methods are on the HttpServer instance or a more detailed handler struct. E.g (AuthHandler). This ensures they get access to HttpServer service dependencies (and Cfg object) and can avoid global state.
## 106 - Date comparison
**State:** Ongoing, passive.
Store newly introduced date columns in the database as epoch based
integers (i.e. unix timestamps) if they require date comparison. This
permits a unified approach for comparing dates against all the supported
databases instead of handling dates differently for each database. Also,
by comparing epoch based integers, we no longer need error pruning
transformations to and from other time zones.
## 107 - Avoid use of the simplejson package
**State:** Ongoing, passive
Use of the `simplejson` package (`pkg/components/simplejson`) in place
of types (Go structs) results in code that is difficult to maintain.
Instead, create types for objects and use the Go standard library's
**State:** Abandoned: Grafana's file based refactoring is limited to work natively only on on-premise installations of Grafana. We're looking at enhancing the use of the API to enable provisioning for all Grafana instances.
All new features that require state should be possible to configure using config files. For example:
Today it's only possible to provision data sources and dashboards but this is something we want to support all over Grafana.
### 109 - Use context.Context "everywhere"
**State:** Completed.
The package [context](https://golang.org/pkg/context/) should be used
and propagated through all the layers of the code. For example the
`context.Context` of an incoming API request should be propagated to any
other layers being used such as the bus, service and database layers.
Utility functions/methods normally doesn't need `context.Context`.
To follow Go best practices, any function/method that receives a
[`context.Context` argument should receive it as its first parameter](https://github.com/golang/go/wiki/CodeReviewComments#contexts).
To be able to solve certain problems and/or implement and support
certain features making sure that `context.Context` is passed down
through all layers of the code is vital. Being able to provide
contextual information for the full life-cycle of an API request allows
us to use contextual logging, provide contextual information about the
authenticated user, create multiple spans for a distributed trace of
service calls and database queries etc.
Code should use `context.TODO` when it's unclear which Context to use,
or it is not yet available (because the surrounding function has not yet
been extended to accept a `context.Context` argument).
More details in [Services](/contribute/backend/services.md), [Communication](/contribute/backend/communication.md) and [Database](/contribute/backend/database.md).
We use [GolangCI-Lint](https://github.com/golangci/golangci-lint) with a
custom configuration [.golangci.toml](/.golangci.toml) to run these
checks.
To run all linters, use the `lint-go` Makefile target:
@@ -36,10 +29,6 @@ We value clean and readable code, that is loosely coupled and covered by unit te
Tests must use the standard library, `testing`. For assertions, prefer using [testify](https://github.com/stretchr/testify).
The majority of our tests uses [GoConvey](http://goconvey.co/) but that's something we want to avoid going forward.
In the `sqlstore` package we do database operations in tests and while some might say that's not suited for unit tests. We think they are fast enough and provide a lot of value.
### Integration Tests
We run unit and integration tests separately, to help keep our CI pipeline running smoothly and provide a better developer experience.
If you do not follow this convention, your integration test may be run twice or not run at all.
> Warning
> If you do not follow this convention, your integration test may be run twice or not run at all.
### Assertions
@@ -72,8 +62,7 @@ code, plus lets you run each test case in isolation when debugging. Don't use `t
### 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`).
Use [`t.Cleanup`](https://golang.org/pkg/testing/#T.Cleanup) to clean up resources in tests. It's a preferable to `defer`, as it can be called from helper functions. It will always execute after the test is over in reverse call order (last `t.Cleanup` first, same as `defer`).
### Mock
@@ -201,11 +190,14 @@ for context.
If a column, or column combination, should be unique, add a corresponding uniqueness constraint through a migration.
### Usage of XORM Session.Insert() and Session.InsertOne()
The [Session.Insert()](https://pkg.go.dev/github.com/go-xorm/xorm#Session.Insert) and [Session.InsertOne()](https://pkg.go.dev/github.com/go-xorm/xorm#Session.InsertOne) are poorly documented and return the number of affected rows contrary to a common mistake that they return the newly introduced primary key. Therefore, contributors should be extra cautious when using them.
The same applies for the respective [Engine.Insert()](https://pkg.go.dev/github.com/go-xorm/xorm#Engine.Insert) and [Engine.InsertOne()](https://pkg.go.dev/github.com/go-xorm/xorm#Engine.InsertOne)
## 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
department.
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 [encoding/json](https://golang.org/pkg/encoding/json/) instead.
DisplayName:"Usage statistics",// display name for the collector in the UI
Description:"Usage statistics of the Grafana instance",// description for the collector in the UI
IncludedByDefault:false,// whether the collector is included by default in the support bundle and can't be deselected. Most times you want this to be false.
Default:false,// whether the collector is selected by default in the support bundle. User can still deselect it.
// Function that will actually collect the file during the support bundle generation.
@@ -4,7 +4,7 @@ Grafana uses the [i18next](https://www.i18next.com/) framework for managing tran
## tl;dr
**Please note:** We do not currently accept contributions for translations. Please do not submit pull requests for grafana.json files - they will be rejected.
**Please note:** We do not currently accept contributions for translations. Please do not submit pull requests translating grafana.json files - they will be rejected. We do accept contributions to mark up phrases for translation.
- Use `<Trans i18nKey="search-results.panel-link">Go to {{ pageTitle }}</Trans>` in code to add a translatable phrase
- Translations are stored in JSON files in `public/locales/{locale}/grafana.json`
- [Create React App: Remove React.FC from typescript template](https://github.com/facebook/create-react-app/pull/8177)
- [Kent C. Dodds: How to write a React Component in Typescript](https://kentcdodds.com/blog/how-to-write-a-react-component-in-typescript)
- [Kent C. Dodds: Function forms](https://kentcdodds.com/blog/function-forms)
- [Sam Hendrickx: Why you probably shouldn't use React.FC?](https://medium.com/raccoons-group/why-you-probably-shouldnt-use-react-fc-to-type-your-react-components-37ca1243dd13)
"title":"DataLink: with __value.raw=&__value.time=&__value:percentencode=",
"type":"table"
},
{
"datasource":{
"type":"testdata",
"uid":"PD8C576611E62080A"
},
"fieldConfig":{
"defaults":{
"color":{
"mode":"thresholds"
},
"links":[
{
"targetBlank":true,
"title":"Value link",
"url":"value=${__value.raw}"
}
],
"mappings":[],
"thresholds":{
"mode":"absolute",
"steps":[
{
"color":"green"
},
{
"color":"red",
"value":80
}
]
}
},
"overrides":[]
},
"gridPos":{
"h":7,
"w":12,
"x":12,
"y":3
},
"id":3,
"options":{
"colorMode":"value",
"graphMode":"area",
"justifyMode":"auto",
"orientation":"auto",
"reduceOptions":{
"calcs":[
"lastNotNull"
],
"fields":"",
"values":false
},
"textMode":"auto"
},
"pluginVersion":"9.5.0-pre",
"targets":[
{
"datasource":{
"type":"testdata",
"uid":"PD8C576611E62080A"
},
"refId":"A",
"scenarioId":"random_walk",
"seriesCount":5
}
],
"title":"Stat panel with __value.raw ",
"type":"stat"
},
{
"datasource":{
"type":"testdata",
"uid":"PD8C576611E62080A"
},
"fieldConfig":{
"defaults":{
"color":{
"mode":"continuous-GrYlRd"
},
"links":[
{
"title":"${__value.raw}",
"url":"${__value.raw}"
}
],
"mappings":[],
"thresholds":{
"mode":"absolute",
"steps":[
{
"color":"green"
},
{
"color":"red",
"value":80
}
]
}
},
"overrides":[]
},
"gridPos":{
"h":7,
"w":12,
"x":0,
"y":10
},
"id":6,
"options":{
"displayMode":"basic",
"minVizHeight":10,
"minVizWidth":0,
"orientation":"horizontal",
"reduceOptions":{
"calcs":[],
"fields":"",
"values":true
},
"showUnfilled":true,
"valueMode":"color"
},
"pluginVersion":"9.5.0-pre",
"targets":[
{
"csvFileName":"browser_marketshare.csv",
"datasource":{
"type":"testdata",
"uid":"PD8C576611E62080A"
},
"refId":"A",
"scenarioId":"csv_file"
}
],
"title":"data link __value.raw",
"transformations":[
{
"id":"limit",
"options":{
"limitField":5
}
}
],
"type":"bargauge"
},
{
"datasource":{
"type":"testdata",
"uid":"PD8C576611E62080A"
},
"description":"Since this is using getFrameDisplayName it works kind badly (especially with testdata) and only returns the `Series (refId)`. \n\nSo this should show:\n* Series (Query1)\n* Series (Query2)",
1. On the command line, first change to the docs folder: `cd docs`.
1. Run `make docs`. This launches a preview of the website with the current grafana docs at `http://localhost:3002/docs/grafana/next/` which will refresh automatically when changes are made to content in the `sources` directory.
1. Run `make docs`. This launches a preview of the website with the current grafana docs at `http://localhost:3002/docs/grafana/latest/` which will refresh automatically when changes are made to content in the `sources` directory.
If you have the grafana/website repo checked out in the same directory as the grafana repo, then you can run `make docs-local-static` to use local assets (such as images).
@@ -52,7 +52,7 @@ To specify different menu text from the page title, use the front matter paramet
### Add images
Images are currently hosted in the grafana/website repo.
Please see our help documentation on [Image, diagram, and screenshot guidelines](https://grafana.com/docs/writers-toolkit/writing-guide/image-guidelines/) for comprehensive information.
@@ -27,14 +27,23 @@ Create an API key when you want to manage your computed workload with a user.
This topic shows you how to create an API key using the Grafana UI. You can also create an API key using the Grafana HTTP API. For more information about creating API keys via the API, refer to [Create API key via API]({{< relref "../../developers/http_api/create-api-tokens-for-org/#how-to-create-a-new-organization-and-an-api-token" >}}).
### Before you begin:
### Before you begin
- Ensure you have permission to create and edit API keys. For more information about permissions, refer to [Roles and permissions]({{< relref "../roles-and-permissions/#" >}}).
To follow these instructions, you need at least one of the following:
**To create an API key:**
- Administrator permissions
- Editor permissions
- Service account writer
1. Sign in to Grafana, hover your cursor over **Configuration** (the gear icon), and click **API Keys**.
1. Click **New API key**.
- To ensure you have permission to create and edit API keys, follow the instructions in [Roles and permissions]({{< relref "../roles-and-permissions/#" >}}).
### Steps
To create an API, complete the following steps:
1. Sign in to Grafana.
1. Click **Administration** in the left-side menu and select **API Keys**.
1. Click **Add API key**.
1. Enter a unique name for the key.
1. In the **Role** field, select one of the following access levels you want to assign to the key.
- **Admin**: Enables a user to use APIs at the broadest, most powerful administrative level.
@@ -44,39 +53,97 @@ This topic shows you how to create an API key using the Grafana UI. You can also
- If you are unsure about how long an API key should be valid, we recommend that you choose a short duration, such as a few hours. This approach limits the risk of having API keys that are valid for a long time.
1. Click **Add**.
## Migrate API Keys to Grafana service accounts
## Migrate API keys to Grafana service accounts
You can migrate one or all API keys to [Grafana service accounts]({{< relref "../service-accounts/" >}}). When you migrate an API key to a service account, a service account will be created with a service account token.
The API key will continue to work, and you can find it in the [Grafana service account tokens]({{< relref "../service-accounts/#service-account-tokens" >}}) details.
For more information about benefits of service accounts, refer to [Grafana service account benefits]({{< relref "../service-accounts/#service-account-benefits" >}}).
As an alternative to using API keys for authentication, you can use a service account-based authentication system. When compared to API keys, service accounts have limited scopes that provide more security than using API keys.
You can choose to migrate a single API key or all API keys. Note that when you migrate all API keys, you can't create new API keys anymore and will have to use serviceaccounts instead.
For more information about the benefits of service accounts, refer to [Grafana service account benefits]({{< relref "../service-accounts/#service-account-benefits" >}}).
### Before you begin
The service account endpoints generate a machine user for authentication instead of using API keys. When you migrate an API key to a service account, a service account will be created with a service account token.
- Ensure you have permission to create Grafana service accounts. For more information about permissions, refer to [Roles and permissions]({{< relref "../roles-and-permissions/#" >}}).
> **Note:** If you are using API keys for authentication, we recommend that you migrate your integration to the service account authentication method. The API key will continue to work. You can locate the API key in the [Grafana service account tokens]({{< relref "../service-accounts/#service-account-tokens" >}}) details.
**To migrate all API keys to service accounts:**
## Ways of migrating API keys to service accounts
1. Sign in to Grafana, hover your cursor over **Configuration** (the gear icon), and click **API Keys**.
2. In the top of the page, find the section which says **Switch from API keys to service accounts**
3. Click **Migrate to service accounts now**.
4. A confirmation window will appear, asking to confirm the migration. Click **Yes, migrate now** if you are willing to continue.
5. Once migration is successful, you can choose to forever hide the API keys page. Click **Hide API keys page forever** if you want to do that.
If you are currently using API keys in your environment, you need to reconfigure your setup to use service accounts.
**To migrate single API key to a service account:**
Depending on your current setup, you may need to use one or all of the following methods to migrate your environment to service accounts:
1. Sign in to Grafana, hover your cursor over **Configuration** (the gear icon), and click **API Keys**.
- The Grafana user interface: Use this method if you have been using the UI to manage your API keys and want to switch to using service accounts.
- The Grafana API: Use this method if you have been using API calls to manage your API keys and want to switch to using service accounts programmatically.
- Terraform: If you have a Terraform configuration that sets up API keys, you need to reconfigure your Terraform to use service accounts instead.
By following these steps, you can successfully migrate your integration from API keys to service accounts and continue using Grafana seamlessly.
### Migrate API keys to Grafana service accounts using the Grafana user interface
This section shows you how to migrate API keys to Grafana service accounts using the Grafana user interface. You can choose to migrate a single API key or all API keys. When you migrate all API keys, you can no longer create API keys and must use service accounts instead.
#### Before you begin
To follow these instructions, you need at least one of the following:
- Administrator permissions
- Editor permissions
- Service account writer
For more information about permissions, refer to [Roles and permissions]({{< relref "../roles-and-permissions/#" >}}).
#### Steps
To migrate all API keys to service accounts, complete the following steps:
1. Sign in to Grafana, point to **Configuration** (the gear icon), and click **API Keys**.
1. In the top of the page, find the section which says **Switch from API keys to service accounts**
1. Click **Migrate to service accounts now**.
1. A confirmation window will appear, asking to confirm the migration. Click **Yes, migrate now** if you are willing to continue.
1. Once migration is successful, you can choose to forever hide the API keys page. Click **Hide API keys page forever** if you want to do that.
To migrate a single API key to a service account, complete the following steps:
1. Sign in to Grafana.
1. Click **Administration** in the left-side menu and select **API Keys**.
1. Find the API Key you want to migrate.
1. Click **Migrate to service account**.
### Revert service account token to API key
### Migrate API keys to Grafana service accounts using the API
**Note:** This is undesired operation and should be used only in emergency situations.
This section shows you how to migrate API keys to Grafana service accounts using the Grafana API.
It is possible to convert back service account token to API key. You can use the [Revert service account token to API key HTTP API]({{< relref "../../developers/http_api/create-api-tokens-for-org/#how-to-create-a-new-organization-and-an-api-token" >}}) for that.
#### Before you begin
**The revert will perform the following actions:**
To follow these instructions, you need one of the following:
1. Convert the given service account token back to API key
1. Delete the service account associated with the given key. **Make sure there are no other tokens associated with the service account, otherwise they all will be deleted.**
- Administrator permissions
- Editor permissions
- Service account writer
#### Steps
Complete the following steps to migrate from API keys to service accounts using the API:
1. Call the `POST /api/serviceaccounts` endpoint and the `POST /api/serviceaccounts/<id>/tokens`.
This action generates a service account token.
1. Store the ID and secret that the system returns to you.
1. Pass the token in the `Authrorization` header, prefixed with `Bearer`.
This action authenticates API requests.
1. SATs used for authentication
1. Remove code that handles the old `/api/auth/keys` endpoint.
1. Track the [API keys](http://localhost:3000/org/apikeys) in use and migrate them to SATs.
### Migrate API keys to Grafana service accounts using Terraform
This section shows you how to migrate API keys to Grafana service accounts using Terraform.
#### Steps
Complete the following steps to migrate from API keys to service accounts using Terraform:
1. Generate `grafana_service_account` and `grafana_service_account_token` resources.
1. Specify the desired scopes and expiration date when creating the service account.
1. Use the token returned from `grafana_service_account_token` to authenticate the API requests.
1. Remove the terraform configuration for creating your `grafana_api_key` resources.
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.