Expand template testing to try additional scopes if the root scope fails.
This mitigates errors for definitions like pagerduty.default.instances,
which require the .Alerts scope. Added support for .Alerts and .Alert
scopes.
* add column guid to alert rule table and rule_guid to rule version table
+ populate the new field with UUID
* update storage and domain models
* patch GUID
* ignore GUID in fingerprint tests
* move prometheus.register for unified storage metrics into metrics.go and do most of the plumbing to get it to work
* convert StorageApiMetrics to pointer and check for nil before using it
* rename type and variables to something more sensible
---------
Co-authored-by: Jean-Philippe Quéméner <jeanphilippe.quemener@grafana.com>
* Restore feature: wip
* Refactor modal to separate component
* fix restoring from the drawer
* rename components folder to version-history, and move version-utils.file there
* skip fetching rule when uid is empty, add returnTo when restoring manually
* Fix drawer fetching infinitely
* Move drawer to separate file
* add tracking for restore success and restore failure
* Fix name of error interaction
* Add `compare` to each row in version history
* Add warning when manually restoring and trigger form validation
* Fix initial validation for contact point selector
* Wait for successful fetch before potential error
* Add disabled state when loading
* Fix loading check for contact point selector
* Fix typo
* Move hook to separate file and move other method into utils
* Update imports and remove manual state management
* Fix infinite render
* Remove onError from dep array
* Use separate flag for showing manual restore alert
* Rename to createdAt
* add and use ability to restore to check if retore is allowed
* Fix test and add isGrafanaManagedAlertRule to the ability check
* Address PR feedback
* Change to isManualRestore for trigger check
* udpate AlertRuleAction.Restore ability
* make the alertingRuleVersionHistoryRestore ff , enabled by default
* fix ff
---------
Co-authored-by: Tom Ratcliffe <tom.ratcliffe@grafana.com>
Initially, Metadata had only the EditorSettings, and HasMetadata was used to understand if the incoming update request had metadata in the body because it could be omitted if it was empty. For example, when the rule is updated via the provisioning API or has only false values. If it was in the request, we used that; if not, we used the metadata from the existing rule from the database. If the rule was updated via the AlertRuleService, we didn't change Metadata at all if the rule already existed.
But now, Metadata also has the Prometheus rule definition, and we always need to update it with the new version of the AlertRuleService when the rule exists in the DB and has the same UID. HasMetadata is renamed to HasEditorSettings to keep the old behaviour only for EditorSettings.
Now, the provisioning API and the conversion API will overwrite everything except EditorSettings with the new data.
When you use a math expression with out any operators, the dataFrame pointer is identical between the expression result and the input query/expression.
This was resulting in the values returned from an evaluation overshadowing each other, depending on the order of the processing of the result map.
For example:
```
A: some_metric
B: reduce of A
C: math expression -> "${B}"
D: Threshold evaluation of C -> "C > 0"
```
With a value of 1 for `some_metric`, might result in a evaluation result of one of the following (somewhat at random):
1. { B: 1, D: 1 }
2. { C: 1, D: 1}
While you would expect to see:
{ B: 1, C: 1, D: 1 }
* Create LogLineMenu component
* Fine tune icon width
* LogLineMenu: Add placeholder options
* utils: create reusable handleOpenLogsContextClick
* LogLineMenu: add callbacks to menu items
* LogListContext: create component
* LogList: use log list context to connect menu callbacks
* LogLine: add pinned style
* Remove unused imports
* LogLine: add unit test
* LogLine: add menu test case
* LogLineMenu: add unit test
* LogLineMessage: add unit test
* LogListContext: add unit test
* Remove unused code
* Extract translations
* Fix handleOpenLogsContextClick
* Chore: memoize styles
* Virtualization: update node used for underflow detection
* Use useStyles2 instead of manually memoizing
* Virtualization: export getter instead of variable
* Open context: move stopPropagation to the old panel code
* Logs: add new container class
* Create the frontend test workflow
* Give .github/workflows/test-frontend to frontend platform group
* Remove file filter
* rename workflow
* frontend unit tests
* add yarn install
* update CODEOWNERS
* Run on 8 core machines?
* use parallelization?
* add sharding
* update package.json to allow sharding jest
* update workflow name
* yarn generate-apis
* update naming
* pass formatted scope filters to adhoc
* fix
* fix
* fix scenario where we have equals and not-equals filters with the same key
* add canary packages for testing
* WIP
* refactor to pass all filter values
* rename property
* refactor
* update canary scenes
* update scenes version
* fix tests
* fix arg startProfile bug that arised with scenes update
* LogList: add displayedFields and getFieldLinks props
* Render displayed fields
* LogLine: rename function
* Refactor log dimensions
* Generate styles in parent component
* Log List: implement tabular unwrapped logs
* Rename class
* Log line: center fields
* Parametrize field gap
* Virtualization: update measurement to support displayed fields
* Shorten visible level
* Do not calculate dimensions when logs are wrapped
* Logs Navigation: fix width when flag is enabled
* Pass styles to LogLineMessage
* Formatting
* Fix unwrapped logs when showTime is off
* LogLine: update css selectors for fields