Compare commits

...

9 Commits

Author SHA1 Message Date
Jo d9d6ba0fc4 TeamMember: Treat null permission as member (#104195)
(cherry picked from commit afcb551562)
2025-04-21 11:43:42 +00:00
Yuri Tseretyan 341a885a38 [release-12.0.1] Docs: Remove mention of alertingApiServer flag from alerting documentation (#104205)
Docs: Remove mention of alertingApiServer flag from alerting documentation (#104131)

(cherry picked from commit 1bafd5c807)

# Conflicts:
#	docs/sources/alerting/set-up/configure-rbac/_index.md
2025-04-18 15:57:29 -04:00
grafana-delivery-bot[bot] 910ce8367a [release-12.0.1] Transformations: Wrap field names selection, prevent rendering off-screen (#104186)
Transformations: Remove deprecated ui element and wrap pills (#104143)

* Remove deprecated ui element and wrap pills

* Fix for labels to fields too

* Update betterer

(cherry picked from commit 57fd67436e)

Co-authored-by: Kristina <kristina.durivage@grafana.com>
2025-04-18 11:52:18 -05:00
grafana-delivery-bot[bot] a6a5c77add [release-12.0.1] InfluxDB: Fix nested variable interpolation (#104176)
InfluxDB: Fix nested variable interpolation (#104067)

Validate query type

(cherry picked from commit 519b75bd1e)

Co-authored-by: Andreas Christou <andreas.christou@grafana.com>
2025-04-17 17:29:00 +01:00
grafana-delivery-bot[bot] e94d5f0119 [release-12.0.1] Provisioning: Add banner with more feature info (#104146)
Provisioning: Add banner with more feature info (#104111)

* Provisioning: Add experimental feature banner

* translations

(cherry picked from commit d85d730d9c)

Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
2025-04-17 07:09:33 +01:00
grafana-delivery-bot[bot] 9eb36ac222 [release-12.0.1] Docs: Updating cloud migration docs ahead of G12 (#104134)
Co-authored-by: Michael Mandrus <41969079+mmandrus@users.noreply.github.com>
Co-authored-by: Jacob Valdez <jacob.valdez@grafana.com>
2025-04-16 15:20:33 -05:00
Nick Richmond 2e6bfb76cb MetricsDrilldown: Restore link to Metrics Drilldown from Explore (#104073)
MetricsDrilldown: Restore link to Metrics Drilldown from Explore (#104069)

fix: add missing entry in list of queryless apps
2025-04-16 12:55:28 -04:00
Laura Fernández 173db4aac7 [release-12.0.1] i18n: Move locale code behind the feature toggle in internationalization/dates.ts (#104090) 2025-04-16 15:34:44 +02:00
Jev Forsberg 44cfb7c6b4 Chore: Update version in release-12.0.1 branch (#104061)
baldm0mma/ update version to 12.0.1
2025-04-15 12:29:38 -06:00
74 changed files with 384 additions and 337 deletions
+1 -2
View File
@@ -2801,8 +2801,7 @@ exports[`better eslint`] = {
[0, 0, 0, "Do not use any type assertions.", "0"]
],
"public/app/features/transformers/editors/CalculateFieldTransformerEditor/ReduceRowOptionsEditor.tsx:5381": [
[0, 0, 0, "\'HorizontalGroup\' import from \'@grafana/ui\' is restricted from being used by a pattern. Use Stack component instead.", "0"],
[0, 0, 0, "Do not use any type assertions.", "1"]
[0, 0, 0, "Do not use any type assertions.", "0"]
],
"public/app/features/transformers/editors/CalculateFieldTransformerEditor/WindowOptionsEditor.tsx:5381": [
[0, 0, 0, "Do not use any type assertions.", "0"]
+2 -2
View File
@@ -122,7 +122,7 @@
"sort": "none"
}
},
"pluginVersion": "12.0.0-pre"
"pluginVersion": "12.0.1"
}
}
}
@@ -193,7 +193,7 @@
"textMode": "auto",
"wideLayout": true
},
"pluginVersion": "12.0.0-pre"
"pluginVersion": "12.0.1"
}
}
}
@@ -191,7 +191,7 @@
"sort": "none"
}
},
"pluginVersion": "12.0.0-pre",
"pluginVersion": "12.0.1",
"targets": [
{
"alias": "memory",
@@ -344,7 +344,7 @@
"sort": "none"
}
},
"pluginVersion": "12.0.0-pre",
"pluginVersion": "12.0.1",
"targets": [
{
"alias": "logins",
@@ -436,7 +436,7 @@
"textMode": "auto",
"wideLayout": true
},
"pluginVersion": "12.0.0-pre",
"pluginVersion": "12.0.1",
"targets": [
{
"datasource": {
@@ -513,7 +513,7 @@
"textMode": "auto",
"wideLayout": true
},
"pluginVersion": "12.0.0-pre",
"pluginVersion": "12.0.1",
"targets": [
{
"datasource": {
@@ -592,7 +592,7 @@
"textMode": "auto",
"wideLayout": true
},
"pluginVersion": "12.0.0-pre",
"pluginVersion": "12.0.1",
"targets": [
{
"datasource": {
@@ -669,7 +669,7 @@
"textMode": "auto",
"wideLayout": true
},
"pluginVersion": "12.0.0-pre",
"pluginVersion": "12.0.1",
"targets": [
{
"datasource": {
@@ -824,7 +824,7 @@
"sort": "none"
}
},
"pluginVersion": "12.0.0-pre",
"pluginVersion": "12.0.1",
"targets": [
{
"alias": "web_server_01",
@@ -932,7 +932,7 @@
"textMode": "auto",
"wideLayout": true
},
"pluginVersion": "12.0.0-pre",
"pluginVersion": "12.0.1",
"targets": [
{
"datasource": {
@@ -1009,7 +1009,7 @@
"textMode": "auto",
"wideLayout": true
},
"pluginVersion": "12.0.0-pre",
"pluginVersion": "12.0.1",
"targets": [
{
"datasource": {
@@ -1086,7 +1086,7 @@
"textMode": "auto",
"wideLayout": true
},
"pluginVersion": "12.0.0-pre",
"pluginVersion": "12.0.1",
"targets": [
{
"datasource": {
@@ -1165,7 +1165,7 @@
"textMode": "auto",
"wideLayout": true
},
"pluginVersion": "12.0.0-pre",
"pluginVersion": "12.0.1",
"targets": [
{
"datasource": {
@@ -1305,7 +1305,7 @@
"sort": "none"
}
},
"pluginVersion": "12.0.0-pre",
"pluginVersion": "12.0.1",
"targets": [
{
"datasource": {
@@ -1341,4 +1341,4 @@
"title": "TestData - Demo Dashboard",
"uid": "000000003",
"version": 2
}
}
@@ -11,7 +11,7 @@ weight: 400
# Grafana Cloud Migration Assistant
The Grafana Cloud Migration Assistant is available in Grafana 11.2+ as a [public preview feature](https://grafana.com/docs/release-life-cycle/#public-preview) that automatically migrates resources from your Grafana OSS/Enterprise instance to Grafana Cloud. It provides the following functionalities:
The Grafana Cloud Migration Assistant, generally available from Grafana v12.0, automatically migrates resources from your Grafana OSS/Enterprise instance to Grafana Cloud. It provides the following functionality:
- Securely connect your self-managed instance to a Grafana Cloud instance.
- Seamlessly migrate resources such as dashboards, data sources, and folders to your cloud instance in a few easy steps.
@@ -82,9 +82,6 @@ You can use the migration assistant to generate a migration token on your Grafan
1. Navigate to **Home** > **Administration** > **General** > **Migrate to Grafana Cloud** in the cloud instance where you intend to migrate your resources.
1. Click on the **Generate a migration token** button.
![The Generate a migration token button in the Migrate to Grafana Cloud page in the intended Grafana Cloud Stack](/media/docs/grafana-cloud/account-management/screenshot-generate-migration-token.png)
1. Make a copy of the migration token by copying to clipboard. The token is required to authenticate your self-managed instance with the Grafana Cloud Stack.
### Connect your self-managed Grafana instance to the Grafana Cloud Stack
@@ -93,33 +90,50 @@ You can use the migration assistant to generate a migration token on your Grafan
1. Click the **Migrate this instance to Cloud** button.
![The Migrate this instance to Cloud button in the Migrate to Grafana Cloud page on a self-managed Grafana instance](/media/docs/grafana-cloud/account-management/screenshot-migrate-to-cloud.png)
1. Enter your token and click **Connect to this Stack**.
![The Migration token field and Connect to this stack button in the Connect to a cloud stack page in a self-managed Grafana instance](/media/docs/grafana-cloud/account-management/screenshot-connect-to-a-stack.png)
1. Enter your token in the **Migration token** field and click **Connect to this Stack**.
### Build a snapshot
After connecting to the cloud stack, this is the empty state of the migration assistant. You need to create a snapshot of the self-managed Grafana instance to upload it to the cloud stack.
- Click **Build snapshot**
1. Select the checkbox next to each resource you want to migrate to your cloud stack.
{{< admonition type="note" >}}
Some resources can't be uploaded to your cloud stack alone because they rely on other resources:
| Desired resource | Requires |
| :---- | :---- |
| Dashboards | <ul><li>Library Elements</li> <li>Data Sources</li> <li>Plugins</li> <li>Folders</li></ul> |
| Library Elements | Folders |
| Data Sources | Plugins |
| Plugins | Nothing else |
| Folders | Nothing else |
| All Alert rule groups | All other resources |
| Alert Rules | <ul><li>Dashboards</li> <li>Library Elements</li> <li>Data Sources</li> <li>Plugins</li> <li>Folders</li> <li>Notification Policies</li> <li>Notification Templates</li> <li>Contact Points</li> <li>Mute Timings</li></ul> |
| Notification Policies | <ul><li>Notification Templates</li> <li>Contact Points</li></ul> |
| Notification Templates | Nothing else |
| Contact Points | Notification Templates |
| Mute Timings | Nothing else |
{{< /admonition >}}
1. Click **Build snapshot**
![The Build snapshot button on the Migrate to Grafana Cloud page in a self-managed Grafana instance](/media/docs/grafana-cloud/account-management/screenshot-build-a-snapshot.png)
![A list of resources selected for migration and the Build snapshot button](/media/docs/grafana/screenshot-grafana-12-select-resources.png)
### Upload resources to the cloud
After a snapshot is created, a list of resources appears with resource Type and Status populated with **Not yet uploaded**.
![A list of resources with snapshots built but not yet uploaded to Grafana Cloud](/media/docs/grafana-cloud/account-management/screenshot-upload-snapshot.png)
1. Click on **Upload snapshot** to copy the resources to the Grafana Cloud instance.
1. Click on **Upload snapshot** to copy the resources to the Grafana Cloud instance. This also updates statuses for the list of resources. The status changes to 'Uploaded to cloud' for resources successfully copied to the cloud.
1. Use the assistant's real-time progress tracking to monitor the migration. The status changes to 'Uploaded to cloud' for resources successfully copied to the cloud.
You can group and sort resources during and after the migration:
- Click **Name** to sort resources alphabetically.
- Click **Type** to group and sort by resource type.
- Click **Status** to group and sort by upload status (pending upload, uploaded successfully, or experienced errors).
The Snapshot information also updates to inform the user of total resources, errors, and total number of successfully migrated resources.
![An updates list of resources with snapshots built after attempting to upload them to Grafana Cloud](/media/docs/grafana-cloud/account-management/screenshot-updated-snapshot-page.png)
1. Use the assistant's real-time progress tracking to monitor the migration.
![An updates list of resources with snapshots built after attempting to upload them to Grafana Cloud](/media/docs/grafana/screenshot-grafana-12-updated-snapshot-page.png)
1. Review error details for any issues that need manual resolution.
@@ -17,6 +17,10 @@ This migration guide is designed to assist Grafana OSS/Enterprise users in seaml
There isn't yet a standard method for importing existing data into Grafana Cloud from self-managed databases.
{{< /admonition >}}
{{< admonition type="tip" >}}
You can use the [Grafana Cloud Migration Assistant](https://grafana.com/docs/grafana/<GRAFANA_VERSION>/administration/migration-guide/cloud-migration-assistant/), generally available in Grafana v12, to automatically migrate your resources to Grafana Cloud.
{{< /admonition >}}
## Plan and perform a manual migration
If you need to migrate resources beyond what is supported by the Grafana Cloud Migration Assistant, you can migrate them manually with this guide. Moving your team from Grafana OSS/Enterprise to Grafana Cloud manually involves some coordination and communication in addition to the technical migration in the following documentation.
@@ -29,13 +33,13 @@ You may choose to test Grafana Cloud for some time before migrating your entire
When you decide to migrate, set aside a day of cutover during which users should not create new dashboards or alerts. Migrate any newly-created resources, turn on your production Alerting contact points and notification policies in Cloud and turn them off in Grafana OSS/Enterprise, and notify your users. You may also choose to redirect the Grafana OSS/Enterprise URL to your Grafana Cloud URL.
| Component | Migration Effort | Notes |
| ------------ | ---------------- | -------------------------------------------------------------------------- |
| Folders | Low | |
| Dashboards | Low | Data source references might need to be renamed |
| Alerts | Medium | Data source based alerts might need to be adapted |
| Plugins | Medium | Depends on the feature set of the plugin |
| Data sources | High | If the data sources references any secrets, you need to provide them again |
| Component | Migration Effort | Notes |
| ------------ | ---------------- | ------------------------------------------------------------------------- |
| Folders | Low | |
| Dashboards | Low | Data source references might need to be renamed |
| Alerts | Medium | Data source based alerts might need to be adapted |
| Plugins | Medium | Depends on the feature set of the plugin |
| Data sources | High | If the data sources reference any secrets, you need to provide them again |
## Before you begin
@@ -219,8 +219,6 @@ For more information on Cloud Access Policies and how to use them, see [Access p
### Grafana Alerting Notification action definitions
To use these permissions, enable the `alertingApiServer` feature toggle.
| Action | Applicable scopes | Description |
| -------------------------------------------- | ---------------------------------- | ----------------------------------------------------------------------------------------------------------- |
| `alert.notifications.receivers:read` | `receivers:*`<br>`receivers:uid:*` | Read contact points. |
@@ -27,64 +27,44 @@ Each permission contains one or more actions and a scope.
Grafana Alerting has the following permissions.
| Action | Applicable scope | Description |
| ------------------------------------- | -------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `alert.instances.external:read` | `datasources:*`<br>`datasources:uid:*` | Read alerts and silences in data sources that support alerting. |
| `alert.instances.external:write` | `datasources:*`<br>`datasources:uid:*` | Manage alerts and silences in data sources that support alerting. |
| `alert.instances:create` | n/a | Create silences in the current organization. |
| `alert.instances:read` | n/a | Read alerts and silences in the current organization. |
| `alert.instances:write` | n/a | Update and expire silences in the current organization. |
| `alert.notifications.external:read` | `datasources:*`<br>`datasources:uid:*` | Read templates, contact points, notification policies, and mute timings in data sources that support alerting. |
| `alert.notifications.external:write` | `datasources:*`<br>`datasources:uid:*` | Manage templates, contact points, notification policies, and mute timings in data sources that support alerting. |
| `alert.notifications:write` | n/a | Manage templates, contact points, notification policies, and mute timings in the current organization. |
| `alert.notifications:read` | n/a | Read all templates, contact points, notification policies, and mute timings in the current organization. |
| `alert.rules.external:read` | `datasources:*`<br>`datasources:uid:*` | Read alert rules in data sources that support alerting (Prometheus, Mimir, and Loki) |
| `alert.rules.external:write` | `datasources:*`<br>`datasources:uid:*` | Create, update, and delete alert rules in data sources that support alerting (Mimir and Loki). |
| `alert.rules:create` | `folders:*`<br>`folders:uid:*` | Create Grafana alert rules in a folder and its subfolders. Combine this permission with `folders:read` in a scope that includes the folder and `datasources:query` in the scope of data sources the user can query. |
| `alert.rules:delete` | `folders:*`<br>`folders:uid:*` | Delete Grafana alert rules in a folder and its subfolders. Combine this permission with `folders:read` in a scope that includes the folder and `datasources:query` in the scope of data sources the user can query. |
| `alert.rules:read` | `folders:*`<br>`folders:uid:*` | Read Grafana alert rules in a folder and its subfolders. Combine this permission with `folders:read` in a scope that includes the folder. |
| `alert.rules:write` | `folders:*`<br>`folders:uid:*` | Update Grafana alert rules in a folder and its subfolders. Combine this permission with `folders:read` in a scope that includes the folder and `datasources:query` in the scope of data sources the user can query. |
| `alert.silences:create` | `folders:*`<br>`folders:uid:*` | Create rule-specific silences in a folder and its subfolders. |
| `alert.silences:read` | `folders:*`<br>`folders:uid:*` | Read all general silences and rule-specific silences in a folder and its subfolders. |
| `alert.silences:write` | `folders:*`<br>`folders:uid:*` | Update and expire rule-specific silences in a folder and its subfolders. |
| `alert.provisioning:read` | n/a | Read all Grafana alert rules, notification policies, etc via provisioning API. Permissions to folders and data source are not required. |
| `alert.provisioning.secrets:read` | n/a | Same as `alert.provisioning:read` plus ability to export resources with decrypted secrets. |
| `alert.provisioning:write` | n/a | Update all Grafana alert rules, notification policies, etc via provisioning API. Permissions to folders and data source are not required. |
| `alert.provisioning.provenance:write` | n/a | Set provisioning status for alerting resources. Cannot be used alone. Requires user to have permissions to access resources |
Contact point permissions. To enable API and user interface that use these permissions, enable the `alertingApiServer` feature toggle.
| Action | Applicable scope | Description |
| -------------------------------------------- | ---------------------------------- | ----------------------------------------------------------------------------------------------------------- |
| `alert.notifications.receivers:read` | `receivers:*`<br>`receivers:uid:*` | Read contact points. |
| `alert.notifications.receivers.secrets:read` | `receivers:*`<br>`receivers:uid:*` | Export contact points with decrypted secrets. |
| `alert.notifications.receivers:create` | n/a | Create a new contact points. The creator is automatically granted full access to the created contact point. |
| `alert.notifications.receivers:write` | `receivers:*`<br>`receivers:uid:*` | Update existing contact points. |
| `alert.notifications.receivers:delete` | `receivers:*`<br>`receivers:uid:*` | Update and delete existing contact points. |
| `receivers.permissions:read` | `receivers:*`<br>`receivers:uid:*` | Read permissions for contact points. |
| `receivers.permissions:write` | `receivers:*`<br>`receivers:uid:*` | Manage permissions for contact points. |
Mute time interval permissions. To enable API and user interface that use these permissions, enable the `alertingApiServer` feature toggle.
| Action | Applicable scope | Description |
| ------------------------------------------- | ---------------- | -------------------------------------------------- |
| `alert.notifications.time-intervals:read` | n/a | Read mute time intervals. |
| `alert.notifications.time-intervals:write` | n/a | Create new or update existing mute time intervals. |
| `alert.notifications.time-intervals:delete` | n/a | Delete existing time intervals. |
Notification template permissions. To enable these permissions, enable the `alertingApiServer` feature toggle.
| Action | Applicable scope | Description |
| -------------------------------------- | ---------------- | ---------------------------------------- |
| `alert.notifications.templates:read` | n/a | Read templates. |
| `alert.notifications.templates:write` | n/a | Create new or update existing templates. |
| `alert.notifications.templates:delete` | n/a | Delete existing templates. |
Notification policies permissions. To enable API and user interface that use these permissions, enable the `alertingApiServer` feature toggle.
| Action | Applicable scope | Description |
| ---------------------------------- | ---------------- | ---------------------------------------------------- |
| `alert.notifications.routes:read` | n/a | Read notification policies. |
| `alert.notifications.routes:write` | n/a | Create new, update and update notification policies. |
| Action | Applicable scope | Description |
| -------------------------------------------- | -------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `alert.instances.external:read` | `datasources:*`<br>`datasources:uid:*` | Read alerts and silences in data sources that support alerting. |
| `alert.instances.external:write` | `datasources:*`<br>`datasources:uid:*` | Manage alerts and silences in data sources that support alerting. |
| `alert.instances:create` | n/a | Create silences in the current organization. |
| `alert.instances:read` | n/a | Read alerts and silences in the current organization. |
| `alert.instances:write` | n/a | Update and expire silences in the current organization. |
| `alert.notifications.external:read` | `datasources:*`<br>`datasources:uid:*` | Read templates, contact points, notification policies, and mute timings in data sources that support alerting. |
| `alert.notifications.external:write` | `datasources:*`<br>`datasources:uid:*` | Manage templates, contact points, notification policies, and mute timings in data sources that support alerting. |
| `alert.notifications:write` | n/a | Manage templates, contact points, notification policies, and mute timings in the current organization. |
| `alert.notifications:read` | n/a | Read all templates, contact points, notification policies, and mute timings in the current organization. |
| `alert.rules.external:read` | `datasources:*`<br>`datasources:uid:*` | Read alert rules in data sources that support alerting (Prometheus, Mimir, and Loki) |
| `alert.rules.external:write` | `datasources:*`<br>`datasources:uid:*` | Create, update, and delete alert rules in data sources that support alerting (Mimir and Loki). |
| `alert.rules:create` | `folders:*`<br>`folders:uid:*` | Create Grafana alert rules in a folder and its subfolders. Combine this permission with `folders:read` in a scope that includes the folder and `datasources:query` in the scope of data sources the user can query. |
| `alert.rules:delete` | `folders:*`<br>`folders:uid:*` | Delete Grafana alert rules in a folder and its subfolders. Combine this permission with `folders:read` in a scope that includes the folder and `datasources:query` in the scope of data sources the user can query. |
| `alert.rules:read` | `folders:*`<br>`folders:uid:*` | Read Grafana alert rules in a folder and its subfolders. Combine this permission with `folders:read` in a scope that includes the folder. |
| `alert.rules:write` | `folders:*`<br>`folders:uid:*` | Update Grafana alert rules in a folder and its subfolders. Combine this permission with `folders:read` in a scope that includes the folder and `datasources:query` in the scope of data sources the user can query. |
| `alert.silences:create` | `folders:*`<br>`folders:uid:*` | Create rule-specific silences in a folder and its subfolders. |
| `alert.silences:read` | `folders:*`<br>`folders:uid:*` | Read all general silences and rule-specific silences in a folder and its subfolders. |
| `alert.silences:write` | `folders:*`<br>`folders:uid:*` | Update and expire rule-specific silences in a folder and its subfolders. |
| `alert.provisioning:read` | n/a | Read all Grafana alert rules, notification policies, etc via provisioning API. Permissions to folders and data source are not required. |
| `alert.provisioning.secrets:read` | n/a | Same as `alert.provisioning:read` plus ability to export resources with decrypted secrets. |
| `alert.provisioning:write` | n/a | Update all Grafana alert rules, notification policies, etc via provisioning API. Permissions to folders and data source are not required. |
| `alert.provisioning.provenance:write` | n/a | Set provisioning status for alerting resources. Cannot be used alone. Requires user to have permissions to access resources |
| `alert.notifications.receivers:read` | `receivers:*`<br>`receivers:uid:*` | Read contact points. |
| `alert.notifications.receivers.secrets:read` | `receivers:*`<br>`receivers:uid:*` | Export contact points with decrypted secrets. |
| `alert.notifications.receivers:create` | n/a | Create a new contact points. The creator is automatically granted full access to the created contact point. |
| `alert.notifications.receivers:write` | `receivers:*`<br>`receivers:uid:*` | Update existing contact points. |
| `alert.notifications.receivers:delete` | `receivers:*`<br>`receivers:uid:*` | Update and delete existing contact points. |
| `receivers.permissions:read` | `receivers:*`<br>`receivers:uid:*` | Read permissions for contact points. |
| `receivers.permissions:write` | `receivers:*`<br>`receivers:uid:*` | Manage permissions for contact points. |
| `alert.notifications.time-intervals:read` | n/a | Read mute time intervals. |
| `alert.notifications.time-intervals:write` | n/a | Create new or update existing mute time intervals. |
| `alert.notifications.time-intervals:delete` | n/a | Delete existing time intervals. |
| `alert.notifications.templates:read` | n/a | Read templates. |
| `alert.notifications.templates:write` | n/a | Create new or update existing templates. |
| `alert.notifications.templates:delete` | n/a | Delete existing templates. |
| `alert.notifications.routes:read` | n/a | Read notification policies. |
| `alert.notifications.routes:write` | n/a | Create new, update and update notification policies. |
To help plan your RBAC rollout strategy, refer to [Plan your RBAC rollout strategy](https://grafana.com/docs/grafana/next/administration/roles-and-permissions/access-control/plan-rbac-rollout-strategy/).
@@ -56,20 +56,15 @@ Details of the fixed roles and the access they provide for Grafana Alerting are
| Read via Provisioning API + Export Secrets: `fixed:alerting.provisioning.secrets:reader` | `alert.provisioning:read` and `alert.provisioning.secrets:read` | Read alert rules, alert instances, silences, contact points, and notification policies using the provisioning API and use export with decrypted secrets. |
| Access to alert rules provisioning API: `fixed:alerting.provisioning:writer` | `alert.provisioning:read` and `alert.provisioning:write` | Manage all alert rules, notification policies, contact points, templates, in the organization using the provisioning API. |
| Set provisioning status: `fixed:alerting.provisioning.status:writer` | `alert.provisioning.provenance:write` | Set provisioning rules for Alerting resources. Should be used together with other regular roles (Notifications Writer and/or Rules Writer.) |
If you have enabled the `alertingApiServer` feature toggle, an additional set of fixed roles is available.
| Display name in UI / Fixed role | Permissions | Description |
| ------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- |
| Contact Point Reader: `fixed:alerting.receivers:reader` | `alert.notifications.receivers:read` for scope `receivers:*` | Read all contact points. |
| Contact Point Creator: `fixed:alerting.receivers:creator` | `alert.notifications.receivers:create` | Create a new contact point. The user is automatically granted full access to the created contact point. |
| Contact Point Writer: `fixed:alerting.receivers:writer` | `alert.notifications.receivers:read`, `alert.notifications.receivers:write`, `alert.notifications.receivers:delete` for scope `receivers:*` and <br> `alert.notifications.receivers:create` | Create a new contact point and manage all existing contact points. |
| Templates Reader: `fixed:alerting.templates:reader` | `alert.notifications.templates:read` | Read all notification templates. |
| Templates Writer: `fixed:alerting.templates:writer` | `alert.notifications.templates:read`, `alert.notifications.templates:write`, `alert.notifications.templates:delete` | Create new and manage existing notification templates. |
| Time Intervals Reader: `fixed:alerting.time-intervals:reader` | `alert.notifications.time-intervals:read` | Read all time intervals. |
| Time Intervals Writer: `fixed:alerting.time-intervals:writer` | `alert.notifications.time-intervals:read`, `alert.notifications.time-intervals:write`, `alert.notifications.time-intervals:delete` | Create new and manage existing time intervals. |
| Notification Policies Reader: `fixed:alerting.routes:reader` | `alert.notifications.routes:read` | Read all time intervals. |
| Notification Policies Writer: `fixed:alerting.routes:writer` | `alert.notifications.routes:read` `alert.notifications.routes:write` | Create new and manage existing time intervals. |
| Contact Point Reader: `fixed:alerting.receivers:reader` | `alert.notifications.receivers:read` for scope `receivers:*` | Read all contact points. |
| Contact Point Creator: `fixed:alerting.receivers:creator` | `alert.notifications.receivers:create` | Create a new contact point. The user is automatically granted full access to the created contact point. |
| Contact Point Writer: `fixed:alerting.receivers:writer` | `alert.notifications.receivers:read`, `alert.notifications.receivers:write`, `alert.notifications.receivers:delete` for scope `receivers:*` and <br> `alert.notifications.receivers:create` | Create a new contact point and manage all existing contact points. |
| Templates Reader: `fixed:alerting.templates:reader` | `alert.notifications.templates:read` | Read all notification templates. |
| Templates Writer: `fixed:alerting.templates:writer` | `alert.notifications.templates:read`, `alert.notifications.templates:write`, `alert.notifications.templates:delete` | Create new and manage existing notification templates. |
| Time Intervals Reader: `fixed:alerting.time-intervals:reader` | `alert.notifications.time-intervals:read` | Read all time intervals. |
| Time Intervals Writer: `fixed:alerting.time-intervals:writer` | `alert.notifications.time-intervals:read`, `alert.notifications.time-intervals:write`, `alert.notifications.time-intervals:delete` | Create new and manage existing time intervals. |
| Notification Policies Reader: `fixed:alerting.routes:reader` | `alert.notifications.routes:read` | Read all time intervals. |
| Notification Policies Writer: `fixed:alerting.routes:writer` | `alert.notifications.routes:read` `alert.notifications.routes:write` | Create new and manage existing time intervals. |
## Create custom roles
@@ -69,8 +69,6 @@ To manage folder permissions, complete the following steps.
### Before you begin
- Enable the `alertingApiServer` feature toggle.
Extend or limit the access provided by a role to contact points by assigning permissions to individual contact point.
This allows different users, teams, or service accounts to have customized access to read or modify specific contact points.
@@ -1,6 +1,6 @@
{
"name": "@test-plugins/extensions-test-app",
"version": "12.0.0-pre",
"version": "12.0.1",
"private": true,
"scripts": {
"build": "webpack -c ./webpack.config.ts --env production",
@@ -1,6 +1,6 @@
{
"name": "@test-plugins/grafana-e2etest-datasource",
"version": "12.0.0-pre",
"version": "12.0.1",
"private": true,
"scripts": {
"build": "webpack -c ./webpack.config.ts --env production",
+1 -1
View File
@@ -1,5 +1,5 @@
{
"$schema": "node_modules/lerna/schemas/lerna-schema.json",
"npmClient": "yarn",
"version": "12.0.0-pre"
"version": "12.0.1"
}
+1 -1
View File
@@ -3,7 +3,7 @@
"license": "AGPL-3.0-only",
"private": true,
"name": "grafana",
"version": "12.0.0-pre",
"version": "12.0.1",
"repository": "github:grafana/grafana",
"scripts": {
"build": "NODE_ENV=production nx exec --verbose -- webpack --config scripts/webpack/webpack.prod.js --progress",
+2 -2
View File
@@ -2,7 +2,7 @@
"author": "Grafana Labs",
"license": "Apache-2.0",
"name": "@grafana/data",
"version": "12.0.0-pre",
"version": "12.0.1",
"description": "Grafana Data Library",
"keywords": [
"typescript"
@@ -56,7 +56,7 @@
},
"dependencies": {
"@braintree/sanitize-url": "7.0.1",
"@grafana/schema": "12.0.0-pre",
"@grafana/schema": "12.0.1",
"@types/d3-interpolate": "^3.0.0",
"@types/string-hash": "1.1.3",
"@types/systemjs": "6.15.1",
+1 -1
View File
@@ -2,7 +2,7 @@
"author": "Grafana Labs",
"license": "Apache-2.0",
"name": "@grafana/e2e-selectors",
"version": "12.0.0-pre",
"version": "12.0.1",
"description": "Grafana End-to-End Test Selectors Library",
"keywords": [
"cli",
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@grafana/eslint-plugin",
"description": "ESLint rules for use within the Grafana repo. Not suitable (or supported) for external use.",
"version": "12.0.0-pre",
"version": "12.0.1",
"main": "./index.cjs",
"author": "Grafana Labs",
"license": "Apache-2.0",
+3 -3
View File
@@ -2,7 +2,7 @@
"author": "Grafana Labs",
"license": "Apache-2.0",
"name": "@grafana/flamegraph",
"version": "12.0.0-pre",
"version": "12.0.1",
"description": "Grafana flamegraph visualization component",
"keywords": [
"grafana",
@@ -44,8 +44,8 @@
],
"dependencies": {
"@emotion/css": "11.13.5",
"@grafana/data": "12.0.0-pre",
"@grafana/ui": "12.0.0-pre",
"@grafana/data": "12.0.1",
"@grafana/ui": "12.0.1",
"@leeoniya/ufuzzy": "1.0.18",
"d3": "^7.8.5",
"lodash": "4.17.21",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@grafana/saga-icons",
"version": "12.0.0-pre",
"version": "12.0.1",
"private": true,
"description": "Icons for Grafana",
"author": "Grafana Labs",
@@ -3,7 +3,7 @@
"license": "AGPL-3.0-only",
"name": "@grafana/o11y-ds-frontend",
"private": true,
"version": "12.0.0-pre",
"version": "12.0.1",
"description": "Library to manage traces in Grafana.",
"sideEffects": false,
"repository": {
@@ -18,12 +18,12 @@
},
"dependencies": {
"@emotion/css": "11.13.5",
"@grafana/data": "12.0.0-pre",
"@grafana/e2e-selectors": "12.0.0-pre",
"@grafana/data": "12.0.1",
"@grafana/e2e-selectors": "12.0.1",
"@grafana/plugin-ui": "0.10.5",
"@grafana/runtime": "12.0.0-pre",
"@grafana/schema": "12.0.0-pre",
"@grafana/ui": "12.0.0-pre",
"@grafana/runtime": "12.0.1",
"@grafana/schema": "12.0.1",
"@grafana/ui": "12.0.1",
"react-select": "5.10.0",
"react-use": "17.6.0",
"rxjs": "7.8.1",
+1 -1
View File
@@ -2,7 +2,7 @@
"name": "@grafana/plugin-configs",
"description": "Shared dependencies and files for core plugins",
"private": true,
"version": "12.0.0-pre",
"version": "12.0.1",
"dependencies": {
"tslib": "2.8.1"
},
+6 -6
View File
@@ -2,7 +2,7 @@
"author": "Grafana Labs",
"license": "AGPL-3.0-only",
"name": "@grafana/prometheus",
"version": "12.0.0-pre",
"version": "12.0.1",
"description": "Grafana Prometheus Library",
"keywords": [
"typescript"
@@ -38,12 +38,12 @@
"dependencies": {
"@emotion/css": "11.13.5",
"@floating-ui/react": "0.27.7",
"@grafana/data": "12.0.0-pre",
"@grafana/e2e-selectors": "12.0.0-pre",
"@grafana/data": "12.0.1",
"@grafana/e2e-selectors": "12.0.1",
"@grafana/plugin-ui": "0.10.5",
"@grafana/runtime": "12.0.0-pre",
"@grafana/schema": "12.0.0-pre",
"@grafana/ui": "12.0.0-pre",
"@grafana/runtime": "12.0.1",
"@grafana/schema": "12.0.1",
"@grafana/ui": "12.0.1",
"@hello-pangea/dnd": "17.0.0",
"@leeoniya/ufuzzy": "1.0.18",
"@lezer/common": "1.2.3",
+5 -5
View File
@@ -2,7 +2,7 @@
"author": "Grafana Labs",
"license": "Apache-2.0",
"name": "@grafana/runtime",
"version": "12.0.0-pre",
"version": "12.0.1",
"description": "Grafana Runtime Library",
"keywords": [
"grafana",
@@ -53,11 +53,11 @@
"postpack": "mv package.json.bak package.json && rimraf ./unstable"
},
"dependencies": {
"@grafana/data": "12.0.0-pre",
"@grafana/e2e-selectors": "12.0.0-pre",
"@grafana/data": "12.0.1",
"@grafana/e2e-selectors": "12.0.1",
"@grafana/faro-web-sdk": "^1.13.2",
"@grafana/schema": "12.0.0-pre",
"@grafana/ui": "12.0.0-pre",
"@grafana/schema": "12.0.1",
"@grafana/ui": "12.0.1",
"@types/systemjs": "6.15.1",
"history": "4.10.1",
"lodash": "4.17.21",
+1 -1
View File
@@ -2,7 +2,7 @@
"author": "Grafana Labs",
"license": "Apache-2.0",
"name": "@grafana/schema",
"version": "12.0.0-pre",
"version": "12.0.1",
"description": "Grafana Schema Library",
"keywords": [
"typescript"
@@ -8,7 +8,7 @@
//
// Run 'make gen-cue' from repository root to regenerate.
export const pluginVersion = "12.0.0-pre";
export const pluginVersion = "12.0.1";
export interface Options {
limit: number;
@@ -10,7 +10,7 @@
import * as common from '@grafana/schema';
export const pluginVersion = "12.0.0-pre";
export const pluginVersion = "12.0.1";
export interface Options extends common.OptionsWithLegend, common.OptionsWithTooltip, common.OptionsWithTextFormatting {
/**
@@ -10,7 +10,7 @@
import * as common from '@grafana/schema';
export const pluginVersion = "12.0.0-pre";
export const pluginVersion = "12.0.1";
export interface Options extends common.OptionsWithLegend, common.SingleStatBaseOptions {
displayMode: common.BarGaugeDisplayMode;
@@ -10,7 +10,7 @@
import * as common from '@grafana/schema';
export const pluginVersion = "12.0.0-pre";
export const pluginVersion = "12.0.1";
export enum VizDisplayMode {
Candles = 'candles',
@@ -10,7 +10,7 @@
import * as ui from '@grafana/schema';
export const pluginVersion = "12.0.0-pre";
export const pluginVersion = "12.0.1";
export enum HorizontalConstraint {
Center = 'center',
@@ -10,7 +10,7 @@
import * as common from '@grafana/schema';
export const pluginVersion = "12.0.0-pre";
export const pluginVersion = "12.0.1";
export interface MetricStat {
/**
@@ -8,7 +8,7 @@
//
// Run 'make gen-cue' from repository root to regenerate.
export const pluginVersion = "12.0.0-pre";
export const pluginVersion = "12.0.1";
export interface Options {
/**
@@ -8,7 +8,7 @@
//
// Run 'make gen-cue' from repository root to regenerate.
export const pluginVersion = "12.0.0-pre";
export const pluginVersion = "12.0.1";
export interface Options {
selectedSeries: number;
@@ -8,7 +8,7 @@
//
// Run 'make gen-cue' from repository root to regenerate.
export const pluginVersion = "12.0.0-pre";
export const pluginVersion = "12.0.1";
export type UpdateConfig = {
render: boolean,
@@ -10,7 +10,7 @@
import * as common from '@grafana/schema';
export const pluginVersion = "12.0.0-pre";
export const pluginVersion = "12.0.1";
export type BucketAggregation = (DateHistogram | Histogram | Terms | Filters | GeoHashGrid | Nested);
@@ -10,7 +10,7 @@
import * as common from '@grafana/schema';
export const pluginVersion = "12.0.0-pre";
export const pluginVersion = "12.0.1";
export interface Options extends common.SingleStatBaseOptions {
minVizHeight: number;
@@ -10,7 +10,7 @@
import * as ui from '@grafana/schema';
export const pluginVersion = "12.0.0-pre";
export const pluginVersion = "12.0.1";
export interface Options {
basemap: ui.MapLayerOptions;
@@ -10,7 +10,7 @@
import * as ui from '@grafana/schema';
export const pluginVersion = "12.0.0-pre";
export const pluginVersion = "12.0.1";
/**
* Controls the color mode of the heatmap
@@ -10,7 +10,7 @@
import * as common from '@grafana/schema';
export const pluginVersion = "12.0.0-pre";
export const pluginVersion = "12.0.1";
export interface Options extends common.OptionsWithLegend, common.OptionsWithTooltip {
/**
@@ -10,7 +10,7 @@
import * as common from '@grafana/schema';
export const pluginVersion = "12.0.0-pre";
export const pluginVersion = "12.0.1";
export interface Options {
dedupStrategy: common.LogsDedupStrategy;
@@ -10,7 +10,7 @@
import * as common from '@grafana/schema';
export const pluginVersion = "12.0.0-pre";
export const pluginVersion = "12.0.1";
export interface Options {
dedupStrategy: common.LogsDedupStrategy;
@@ -10,7 +10,7 @@
import * as common from '@grafana/schema';
export const pluginVersion = "12.0.0-pre";
export const pluginVersion = "12.0.1";
export enum QueryEditorMode {
Builder = 'builder',
@@ -8,7 +8,7 @@
//
// Run 'make gen-cue' from repository root to regenerate.
export const pluginVersion = "12.0.0-pre";
export const pluginVersion = "12.0.1";
export interface Options {
/**
@@ -8,7 +8,7 @@
//
// Run 'make gen-cue' from repository root to regenerate.
export const pluginVersion = "12.0.0-pre";
export const pluginVersion = "12.0.1";
export interface ArcOption {
/**
@@ -10,7 +10,7 @@
import * as common from '@grafana/schema';
export const pluginVersion = "12.0.0-pre";
export const pluginVersion = "12.0.1";
/**
* Select the pie chart display style.
@@ -10,7 +10,7 @@
import * as common from '@grafana/schema';
export const pluginVersion = "12.0.0-pre";
export const pluginVersion = "12.0.1";
export interface Options extends common.SingleStatBaseOptions {
colorMode: common.BigValueColorMode;
@@ -10,7 +10,7 @@
import * as ui from '@grafana/schema';
export const pluginVersion = "12.0.0-pre";
export const pluginVersion = "12.0.1";
export interface Options extends ui.OptionsWithLegend, ui.OptionsWithTooltip, ui.OptionsWithTimezones {
/**
@@ -10,7 +10,7 @@
import * as ui from '@grafana/schema';
export const pluginVersion = "12.0.0-pre";
export const pluginVersion = "12.0.1";
export interface Options extends ui.OptionsWithLegend, ui.OptionsWithTooltip, ui.OptionsWithTimezones {
/**
@@ -10,7 +10,7 @@
import * as ui from '@grafana/schema';
export const pluginVersion = "12.0.0-pre";
export const pluginVersion = "12.0.1";
export interface Options {
/**
@@ -8,7 +8,7 @@
//
// Run 'make gen-cue' from repository root to regenerate.
export const pluginVersion = "12.0.0-pre";
export const pluginVersion = "12.0.1";
export enum TextMode {
Code = 'code',
@@ -10,7 +10,7 @@
import * as common from '@grafana/schema';
export const pluginVersion = "12.0.0-pre";
export const pluginVersion = "12.0.1";
export interface Options extends common.OptionsWithTimezones {
legend: common.VizLegendOptions;
@@ -10,7 +10,7 @@
import * as common from '@grafana/schema';
export const pluginVersion = "12.0.0-pre";
export const pluginVersion = "12.0.1";
/**
* Identical to timeseries... except it does not have timezone settings
@@ -10,7 +10,7 @@
import * as common from '@grafana/schema';
export const pluginVersion = "12.0.0-pre";
export const pluginVersion = "12.0.1";
export enum PointShape {
Circle = 'circle',
+5 -5
View File
@@ -3,7 +3,7 @@
"license": "AGPL-3.0-only",
"private": true,
"name": "@grafana/sql",
"version": "12.0.0-pre",
"version": "12.0.1",
"repository": {
"type": "git",
"url": "http://github.com/grafana/grafana.git",
@@ -15,11 +15,11 @@
},
"dependencies": {
"@emotion/css": "11.13.5",
"@grafana/data": "12.0.0-pre",
"@grafana/e2e-selectors": "12.0.0-pre",
"@grafana/data": "12.0.1",
"@grafana/e2e-selectors": "12.0.1",
"@grafana/plugin-ui": "0.10.5",
"@grafana/runtime": "12.0.0-pre",
"@grafana/ui": "12.0.0-pre",
"@grafana/runtime": "12.0.1",
"@grafana/ui": "12.0.1",
"@react-awesome-query-builder/ui": "6.6.14",
"immutable": "5.0.3",
"lodash": "4.17.21",
+4 -4
View File
@@ -2,7 +2,7 @@
"author": "Grafana Labs",
"license": "Apache-2.0",
"name": "@grafana/ui",
"version": "12.0.0-pre",
"version": "12.0.1",
"description": "Grafana Components Library",
"keywords": [
"grafana",
@@ -66,10 +66,10 @@
"@emotion/react": "11.14.0",
"@emotion/serialize": "1.3.3",
"@floating-ui/react": "0.27.7",
"@grafana/data": "12.0.0-pre",
"@grafana/e2e-selectors": "12.0.0-pre",
"@grafana/data": "12.0.1",
"@grafana/e2e-selectors": "12.0.1",
"@grafana/faro-web-sdk": "^1.13.2",
"@grafana/schema": "12.0.0-pre",
"@grafana/schema": "12.0.1",
"@hello-pangea/dnd": "17.0.0",
"@leeoniya/ufuzzy": "1.0.18",
"@monaco-editor/react": "4.6.0",
+13 -2
View File
@@ -259,13 +259,24 @@ func (s *legacySQLStore) ListUserTeams(ctx context.Context, ns claims.NamespaceI
var lastID int64
for rows.Next() {
t := UserTeam{}
err := rows.Scan(&t.ID, &t.UID, &t.Name, &t.Permission)
// regression: team_member.permission has been nulled in some instances
// Team memberships created before the permission column was added will have a NULL value
var nullablePermission *int64
err := rows.Scan(&t.ID, &t.UID, &t.Name, &nullablePermission)
if err != nil {
return nil, err
}
lastID = t.ID
if nullablePermission != nil {
t.Permission = team.PermissionType(*nullablePermission)
} else {
// treat NULL as member permission
t.Permission = team.PermissionType(0)
}
res.Items = append(res.Items, t)
lastID = t.ID
if len(res.Items) > int(query.Pagination.Limit)-1 {
res.Continue = lastID
res.Items = res.Items[0 : len(res.Items)-1]
+11 -4
View File
@@ -4,8 +4,12 @@ import memoize from 'micro-memoize';
import { config } from 'app/core/config';
import { getI18next } from './index';
const deepMemoize: typeof memoize = (fn) => memoize(fn, { isEqual: deepEqual });
const isLocaleEnabled = config.featureToggles.localeFormatPreference;
const createDateTimeFormatter = deepMemoize((locale: string, options: Intl.DateTimeFormatOptions) => {
return new Intl.DateTimeFormat(locale, options);
});
@@ -20,17 +24,20 @@ export const formatDate = deepMemoize(
return formatDate(new Date(value), format);
}
const locale = config.locale;
const dateFormatter = createDateTimeFormatter(locale, format);
const i18n = getI18next();
const currentLocale = isLocaleEnabled ? config.locale : i18n.language;
const dateFormatter = createDateTimeFormatter(currentLocale, format);
return dateFormatter.format(value);
}
);
export const formatDuration = deepMemoize(
(duration: Intl.DurationInput, options: Intl.DurationFormatOptions = {}): string => {
const locale = config.locale;
const i18n = getI18next();
const currentLocale = isLocaleEnabled ? config.locale : i18n.language;
const dateFormatter = createDurationFormatter(locale, options);
const dateFormatter = createDurationFormatter(currentLocale, options);
return dateFormatter.format(duration);
}
);
@@ -18,7 +18,12 @@ type Props = {
extensionsToShow: 'queryless' | 'basic';
};
const QUERYLESS_APPS = ['grafana-pyroscope-app', 'grafana-lokiexplore-app', 'grafana-exploretraces-app'];
const QUERYLESS_APPS = [
'grafana-pyroscope-app',
'grafana-lokiexplore-app',
'grafana-exploretraces-app',
'grafana-metricsdrilldown-app',
];
export function ToolbarExtensionPoint(props: Props): ReactElement | null {
const { exploreId, extensionsToShow } = props;
@@ -1,8 +1,10 @@
import { Box, Text, TextLink } from '@grafana/ui';
import { Repository } from 'app/api/clients/provisioning';
import { Page } from 'app/core/components/Page/Page';
import { t } from 'app/core/internationalization';
import { t, Trans } from 'app/core/internationalization';
import GettingStarted from './GettingStarted';
interface Props {
items: Repository[];
}
@@ -20,8 +22,34 @@ export default function GettingStartedPage({ items }: Props) {
}}
>
<Page.Contents>
<Banner />
<GettingStarted items={items} />
</Page.Contents>
</Page>
);
}
function Banner() {
return (
<Box
display="flex"
backgroundColor={'info'}
borderRadius="default"
paddingY={2}
paddingX={2}
marginBottom={3}
alignItems="stretch"
>
<Text>
<Trans i18nKey={'provisioning.banner.message'}>
This feature is currently under active development. For the best experience and latest improvements, we
recommend using the{' '}
<TextLink href={'https://grafana.com/grafana/download/nightly'} external>
nightly build
</TextLink>{' '}
of Grafana.
</Trans>
</Text>
</Box>
);
}
@@ -1,6 +1,6 @@
import { ReducerID } from '@grafana/data';
import { CalculateFieldTransformerOptions, ReduceOptions } from '@grafana/data/internal';
import { FilterPill, HorizontalGroup, InlineField, StatsPicker } from '@grafana/ui';
import { FilterPill, InlineField, Stack, StatsPicker } from '@grafana/ui';
import { t } from 'app/core/internationalization';
import { LABEL_WIDTH } from './constants';
@@ -48,9 +48,9 @@ export const ReduceRowOptionsEditor = (props: {
<InlineField
label={t('transformers.reduce-row-options-editor.label-operation', 'Operation')}
labelWidth={LABEL_WIDTH}
grow={true}
shrink={true}
>
<HorizontalGroup spacing="xs" align="flex-start" wrap>
<Stack gap={0.5} direction="row" alignItems="flex-start" wrap>
{names.map((o, i) => {
return (
<FilterPill
@@ -63,7 +63,7 @@ export const ReduceRowOptionsEditor = (props: {
/>
);
})}
</HorizontalGroup>
</Stack>
</InlineField>
<InlineField
label={t('transformers.reduce-row-options-editor.label-calculation', 'Calculation')}
@@ -85,8 +85,9 @@ export const LabelsAsFieldsTransformerEditor = ({
<InlineField
label={t('transformers.labels-as-fields-transformer-editor.label-labels', 'Labels')}
labelWidth={labelWidth}
shrink={true}
>
<Stack gap={1} wrap={'wrap'}>
<Stack gap={0.5} wrap={'wrap'}>
{labelNames.map((o, i) => {
const label = o.label!;
return (
@@ -2,14 +2,14 @@
"name": "@grafana-plugins/grafana-azure-monitor-datasource",
"description": "Grafana data source for Azure Monitor",
"private": true,
"version": "12.0.0-pre",
"version": "12.0.1",
"dependencies": {
"@emotion/css": "11.13.5",
"@grafana/data": "12.0.0-pre",
"@grafana/data": "12.0.1",
"@grafana/plugin-ui": "0.10.5",
"@grafana/runtime": "12.0.0-pre",
"@grafana/schema": "12.0.0-pre",
"@grafana/ui": "12.0.0-pre",
"@grafana/runtime": "12.0.1",
"@grafana/schema": "12.0.1",
"@grafana/ui": "12.0.1",
"@kusto/monaco-kusto": "^10.0.0",
"fast-deep-equal": "^3.1.3",
"i18next": "^24.0.0",
@@ -25,8 +25,8 @@
"tslib": "2.8.1"
},
"devDependencies": {
"@grafana/e2e-selectors": "12.0.0-pre",
"@grafana/plugin-configs": "12.0.0-pre",
"@grafana/e2e-selectors": "12.0.1",
"@grafana/plugin-configs": "12.0.1",
"@testing-library/dom": "10.4.0",
"@testing-library/jest-dom": "6.6.3",
"@testing-library/react": "16.2.0",
@@ -2,15 +2,15 @@
"name": "@grafana-plugins/stackdriver",
"description": "Grafana data source for Google Cloud Monitoring",
"private": true,
"version": "12.0.0-pre",
"version": "12.0.1",
"dependencies": {
"@emotion/css": "11.13.5",
"@grafana/data": "12.0.0-pre",
"@grafana/data": "12.0.1",
"@grafana/google-sdk": "0.1.2",
"@grafana/plugin-ui": "0.10.5",
"@grafana/runtime": "12.0.0-pre",
"@grafana/schema": "12.0.0-pre",
"@grafana/ui": "12.0.0-pre",
"@grafana/runtime": "12.0.1",
"@grafana/schema": "12.0.1",
"@grafana/ui": "12.0.1",
"debounce-promise": "3.1.2",
"fast-deep-equal": "^3.1.3",
"i18next": "^24.0.0",
@@ -26,8 +26,8 @@
"tslib": "2.8.1"
},
"devDependencies": {
"@grafana/e2e-selectors": "12.0.0-pre",
"@grafana/plugin-configs": "12.0.0-pre",
"@grafana/e2e-selectors": "12.0.1",
"@grafana/plugin-configs": "12.0.1",
"@testing-library/dom": "10.4.0",
"@testing-library/jest-dom": "6.6.3",
"@testing-library/react": "16.2.0",
@@ -2,22 +2,22 @@
"name": "@grafana-plugins/grafana-postgresql-datasource",
"description": "PostgreSQL data source plugin",
"private": true,
"version": "12.0.0-pre",
"version": "12.0.1",
"dependencies": {
"@emotion/css": "11.13.5",
"@grafana/data": "12.0.0-pre",
"@grafana/data": "12.0.1",
"@grafana/plugin-ui": "0.10.5",
"@grafana/runtime": "12.0.0-pre",
"@grafana/sql": "12.0.0-pre",
"@grafana/ui": "12.0.0-pre",
"@grafana/runtime": "12.0.1",
"@grafana/sql": "12.0.1",
"@grafana/ui": "12.0.1",
"lodash": "4.17.21",
"react": "18.3.1",
"rxjs": "7.8.1",
"tslib": "2.8.1"
},
"devDependencies": {
"@grafana/e2e-selectors": "12.0.0-pre",
"@grafana/plugin-configs": "12.0.0-pre",
"@grafana/e2e-selectors": "12.0.1",
"@grafana/plugin-configs": "12.0.1",
"@testing-library/dom": "10.4.0",
"@testing-library/react": "16.2.0",
"@testing-library/user-event": "14.6.1",
@@ -2,13 +2,13 @@
"name": "@grafana-plugins/grafana-pyroscope-datasource",
"description": "Continuous profiling for analysis of CPU and memory usage, down to the line number and throughout time. Saving infrastructure cost, improving performance, and increasing reliability.",
"private": true,
"version": "12.0.0-pre",
"version": "12.0.1",
"dependencies": {
"@emotion/css": "11.13.5",
"@grafana/data": "12.0.0-pre",
"@grafana/runtime": "12.0.0-pre",
"@grafana/schema": "12.0.0-pre",
"@grafana/ui": "12.0.0-pre",
"@grafana/data": "12.0.1",
"@grafana/runtime": "12.0.1",
"@grafana/schema": "12.0.1",
"@grafana/ui": "12.0.1",
"fast-deep-equal": "^3.1.3",
"lodash": "4.17.21",
"monaco-editor": "0.34.1",
@@ -20,7 +20,7 @@
"tslib": "2.8.1"
},
"devDependencies": {
"@grafana/plugin-configs": "12.0.0-pre",
"@grafana/plugin-configs": "12.0.1",
"@testing-library/dom": "10.4.0",
"@testing-library/jest-dom": "6.6.3",
"@testing-library/react": "16.2.0",
@@ -2,13 +2,13 @@
"name": "@grafana-plugins/grafana-testdata-datasource",
"description": "Generates test data in different forms",
"private": true,
"version": "12.0.0-pre",
"version": "12.0.1",
"dependencies": {
"@emotion/css": "11.13.5",
"@grafana/data": "12.0.0-pre",
"@grafana/runtime": "12.0.0-pre",
"@grafana/schema": "12.0.0-pre",
"@grafana/ui": "12.0.0-pre",
"@grafana/data": "12.0.1",
"@grafana/runtime": "12.0.1",
"@grafana/schema": "12.0.1",
"@grafana/ui": "12.0.1",
"d3-random": "^3.0.1",
"lodash": "4.17.21",
"micro-memoize": "^4.1.2",
@@ -21,8 +21,8 @@
"uuid": "11.0.5"
},
"devDependencies": {
"@grafana/e2e-selectors": "12.0.0-pre",
"@grafana/plugin-configs": "12.0.0-pre",
"@grafana/e2e-selectors": "12.0.1",
"@grafana/plugin-configs": "12.0.1",
"@testing-library/dom": "10.4.0",
"@testing-library/react": "16.2.0",
"@testing-library/user-event": "14.6.1",
@@ -1,4 +1,4 @@
import { cloneDeep, extend, has, isString, map as _map, omit, pick, reduce } from 'lodash';
import { map as _map, cloneDeep, extend, has, isString, omit, pick, reduce } from 'lodash';
import { lastValueFrom, merge, Observable, of, throwError } from 'rxjs';
import { catchError, map } from 'rxjs/operators';
@@ -359,7 +359,9 @@ export default class InfluxDatasource extends DataSourceWithBackend<InfluxQuery,
// If matches are found this regex is evaluated to check if the variable is contained in the regex /^...$/ (^ and $ is optional)
// i.e. /^$myVar$/ or /$myVar/ or /^($myVar)$/
const regex = new RegExp(`\\/(?:\\^)?(.*)(\\$${variable.name})(.*)(?:\\$)?\\/`, 'gm');
if (!query) {
// We need to validate the type of the query as some legacy cases can pass a query value with a different type
if (!query || typeof query !== 'string') {
return value;
}
@@ -2,7 +2,7 @@
"name": "@grafana-plugins/jaeger",
"description": "Jaeger plugin for Grafana",
"private": true,
"version": "12.0.0-pre",
"version": "12.0.1",
"dependencies": {
"@emotion/css": "11.13.5",
"@grafana/data": "workspace:*",
@@ -2,22 +2,22 @@
"name": "@grafana-plugins/mssql",
"description": "MSSQL data source plugin",
"private": true,
"version": "12.0.0-pre",
"version": "12.0.1",
"dependencies": {
"@emotion/css": "11.13.5",
"@grafana/data": "12.0.0-pre",
"@grafana/data": "12.0.1",
"@grafana/plugin-ui": "0.10.5",
"@grafana/runtime": "12.0.0-pre",
"@grafana/sql": "12.0.0-pre",
"@grafana/ui": "12.0.0-pre",
"@grafana/runtime": "12.0.1",
"@grafana/sql": "12.0.1",
"@grafana/ui": "12.0.1",
"lodash": "4.17.21",
"react": "18.3.1",
"rxjs": "7.8.1",
"tslib": "2.8.1"
},
"devDependencies": {
"@grafana/e2e-selectors": "12.0.0-pre",
"@grafana/plugin-configs": "12.0.0-pre",
"@grafana/e2e-selectors": "12.0.1",
"@grafana/plugin-configs": "12.0.1",
"@testing-library/dom": "10.4.0",
"@testing-library/react": "16.2.0",
"@testing-library/user-event": "14.6.1",
@@ -2,22 +2,22 @@
"name": "@grafana-plugins/mysql",
"description": "MySQL data source plugin",
"private": true,
"version": "12.0.0-pre",
"version": "12.0.1",
"dependencies": {
"@emotion/css": "11.13.5",
"@grafana/data": "12.0.0-pre",
"@grafana/data": "12.0.1",
"@grafana/plugin-ui": "0.10.5",
"@grafana/runtime": "12.0.0-pre",
"@grafana/sql": "12.0.0-pre",
"@grafana/ui": "12.0.0-pre",
"@grafana/runtime": "12.0.1",
"@grafana/sql": "12.0.1",
"@grafana/ui": "12.0.1",
"lodash": "4.17.21",
"react": "18.3.1",
"rxjs": "7.8.1",
"tslib": "2.8.1"
},
"devDependencies": {
"@grafana/e2e-selectors": "12.0.0-pre",
"@grafana/plugin-configs": "12.0.0-pre",
"@grafana/e2e-selectors": "12.0.1",
"@grafana/plugin-configs": "12.0.1",
"@testing-library/dom": "10.4.0",
"@testing-library/react": "16.2.0",
"@testing-library/user-event": "14.6.1",
@@ -2,13 +2,13 @@
"name": "@grafana-plugins/parca",
"description": "Continuous profiling for analysis of CPU and memory usage, down to the line number and throughout time. Saving infrastructure cost, improving performance, and increasing reliability.",
"private": true,
"version": "12.0.0-pre",
"version": "12.0.1",
"dependencies": {
"@emotion/css": "11.13.5",
"@grafana/data": "12.0.0-pre",
"@grafana/runtime": "12.0.0-pre",
"@grafana/schema": "12.0.0-pre",
"@grafana/ui": "12.0.0-pre",
"@grafana/data": "12.0.1",
"@grafana/runtime": "12.0.1",
"@grafana/schema": "12.0.1",
"@grafana/ui": "12.0.1",
"lodash": "4.17.21",
"monaco-editor": "0.34.1",
"react": "18.3.1",
@@ -18,7 +18,7 @@
"tslib": "2.8.1"
},
"devDependencies": {
"@grafana/plugin-configs": "12.0.0-pre",
"@grafana/plugin-configs": "12.0.1",
"@testing-library/dom": "10.4.0",
"@testing-library/react": "16.2.0",
"@testing-library/user-event": "14.6.1",
@@ -2,7 +2,7 @@
"name": "@grafana-plugins/tempo",
"description": "Grafana plugin for the Tempo data source.",
"private": true,
"version": "12.0.0-pre",
"version": "12.0.1",
"dependencies": {
"@emotion/css": "11.13.5",
"@grafana/data": "workspace:*",
@@ -39,7 +39,7 @@
"uuid": "11.0.5"
},
"devDependencies": {
"@grafana/plugin-configs": "12.0.0-pre",
"@grafana/plugin-configs": "12.0.1",
"@testing-library/dom": "10.4.0",
"@testing-library/jest-dom": "6.6.3",
"@testing-library/react": "16.2.0",
@@ -2,7 +2,7 @@
"name": "@grafana-plugins/zipkin",
"description": "Zipkin plugin for Grafana",
"private": true,
"version": "12.0.0-pre",
"version": "12.0.1",
"dependencies": {
"@emotion/css": "11.13.5",
"@grafana/data": "workspace:*",
+3
View File
@@ -6441,6 +6441,9 @@
}
},
"provisioning": {
"banner": {
"message": "This feature is currently under active development. For the best experience and latest improvements, we recommend using the <2>nightly build</2> of Grafana."
},
"bootstrap-step": {
"description-clear-repository-connection": "Add a clear name for this repository connection",
"empty": "Empty",
+3 -1
View File
@@ -23,7 +23,9 @@ const settings: Partial<GrafanaBootConfig> = {
};
global.grafanaBootData = {
settings,
user: {},
user: {
locale: 'en-US',
},
navTree: [],
};
+78 -78
View File
@@ -2476,13 +2476,13 @@ __metadata:
resolution: "@grafana-plugins/grafana-azure-monitor-datasource@workspace:public/app/plugins/datasource/azuremonitor"
dependencies:
"@emotion/css": "npm:11.13.5"
"@grafana/data": "npm:12.0.0-pre"
"@grafana/e2e-selectors": "npm:12.0.0-pre"
"@grafana/plugin-configs": "npm:12.0.0-pre"
"@grafana/data": "npm:12.0.1"
"@grafana/e2e-selectors": "npm:12.0.1"
"@grafana/plugin-configs": "npm:12.0.1"
"@grafana/plugin-ui": "npm:0.10.5"
"@grafana/runtime": "npm:12.0.0-pre"
"@grafana/schema": "npm:12.0.0-pre"
"@grafana/ui": "npm:12.0.0-pre"
"@grafana/runtime": "npm:12.0.1"
"@grafana/schema": "npm:12.0.1"
"@grafana/ui": "npm:12.0.1"
"@kusto/monaco-kusto": "npm:^10.0.0"
"@testing-library/dom": "npm:10.4.0"
"@testing-library/jest-dom": "npm:6.6.3"
@@ -2520,13 +2520,13 @@ __metadata:
resolution: "@grafana-plugins/grafana-postgresql-datasource@workspace:public/app/plugins/datasource/grafana-postgresql-datasource"
dependencies:
"@emotion/css": "npm:11.13.5"
"@grafana/data": "npm:12.0.0-pre"
"@grafana/e2e-selectors": "npm:12.0.0-pre"
"@grafana/plugin-configs": "npm:12.0.0-pre"
"@grafana/data": "npm:12.0.1"
"@grafana/e2e-selectors": "npm:12.0.1"
"@grafana/plugin-configs": "npm:12.0.1"
"@grafana/plugin-ui": "npm:0.10.5"
"@grafana/runtime": "npm:12.0.0-pre"
"@grafana/sql": "npm:12.0.0-pre"
"@grafana/ui": "npm:12.0.0-pre"
"@grafana/runtime": "npm:12.0.1"
"@grafana/sql": "npm:12.0.1"
"@grafana/ui": "npm:12.0.1"
"@testing-library/dom": "npm:10.4.0"
"@testing-library/react": "npm:16.2.0"
"@testing-library/user-event": "npm:14.6.1"
@@ -2551,11 +2551,11 @@ __metadata:
resolution: "@grafana-plugins/grafana-pyroscope-datasource@workspace:public/app/plugins/datasource/grafana-pyroscope-datasource"
dependencies:
"@emotion/css": "npm:11.13.5"
"@grafana/data": "npm:12.0.0-pre"
"@grafana/plugin-configs": "npm:12.0.0-pre"
"@grafana/runtime": "npm:12.0.0-pre"
"@grafana/schema": "npm:12.0.0-pre"
"@grafana/ui": "npm:12.0.0-pre"
"@grafana/data": "npm:12.0.1"
"@grafana/plugin-configs": "npm:12.0.1"
"@grafana/runtime": "npm:12.0.1"
"@grafana/schema": "npm:12.0.1"
"@grafana/ui": "npm:12.0.1"
"@testing-library/dom": "npm:10.4.0"
"@testing-library/jest-dom": "npm:6.6.3"
"@testing-library/react": "npm:16.2.0"
@@ -2591,12 +2591,12 @@ __metadata:
resolution: "@grafana-plugins/grafana-testdata-datasource@workspace:public/app/plugins/datasource/grafana-testdata-datasource"
dependencies:
"@emotion/css": "npm:11.13.5"
"@grafana/data": "npm:12.0.0-pre"
"@grafana/e2e-selectors": "npm:12.0.0-pre"
"@grafana/plugin-configs": "npm:12.0.0-pre"
"@grafana/runtime": "npm:12.0.0-pre"
"@grafana/schema": "npm:12.0.0-pre"
"@grafana/ui": "npm:12.0.0-pre"
"@grafana/data": "npm:12.0.1"
"@grafana/e2e-selectors": "npm:12.0.1"
"@grafana/plugin-configs": "npm:12.0.1"
"@grafana/runtime": "npm:12.0.1"
"@grafana/schema": "npm:12.0.1"
"@grafana/ui": "npm:12.0.1"
"@testing-library/dom": "npm:10.4.0"
"@testing-library/react": "npm:16.2.0"
"@testing-library/user-event": "npm:14.6.1"
@@ -2672,13 +2672,13 @@ __metadata:
resolution: "@grafana-plugins/mssql@workspace:public/app/plugins/datasource/mssql"
dependencies:
"@emotion/css": "npm:11.13.5"
"@grafana/data": "npm:12.0.0-pre"
"@grafana/e2e-selectors": "npm:12.0.0-pre"
"@grafana/plugin-configs": "npm:12.0.0-pre"
"@grafana/data": "npm:12.0.1"
"@grafana/e2e-selectors": "npm:12.0.1"
"@grafana/plugin-configs": "npm:12.0.1"
"@grafana/plugin-ui": "npm:0.10.5"
"@grafana/runtime": "npm:12.0.0-pre"
"@grafana/sql": "npm:12.0.0-pre"
"@grafana/ui": "npm:12.0.0-pre"
"@grafana/runtime": "npm:12.0.1"
"@grafana/sql": "npm:12.0.1"
"@grafana/ui": "npm:12.0.1"
"@testing-library/dom": "npm:10.4.0"
"@testing-library/react": "npm:16.2.0"
"@testing-library/user-event": "npm:14.6.1"
@@ -2703,13 +2703,13 @@ __metadata:
resolution: "@grafana-plugins/mysql@workspace:public/app/plugins/datasource/mysql"
dependencies:
"@emotion/css": "npm:11.13.5"
"@grafana/data": "npm:12.0.0-pre"
"@grafana/e2e-selectors": "npm:12.0.0-pre"
"@grafana/plugin-configs": "npm:12.0.0-pre"
"@grafana/data": "npm:12.0.1"
"@grafana/e2e-selectors": "npm:12.0.1"
"@grafana/plugin-configs": "npm:12.0.1"
"@grafana/plugin-ui": "npm:0.10.5"
"@grafana/runtime": "npm:12.0.0-pre"
"@grafana/sql": "npm:12.0.0-pre"
"@grafana/ui": "npm:12.0.0-pre"
"@grafana/runtime": "npm:12.0.1"
"@grafana/sql": "npm:12.0.1"
"@grafana/ui": "npm:12.0.1"
"@testing-library/dom": "npm:10.4.0"
"@testing-library/react": "npm:16.2.0"
"@testing-library/user-event": "npm:14.6.1"
@@ -2734,11 +2734,11 @@ __metadata:
resolution: "@grafana-plugins/parca@workspace:public/app/plugins/datasource/parca"
dependencies:
"@emotion/css": "npm:11.13.5"
"@grafana/data": "npm:12.0.0-pre"
"@grafana/plugin-configs": "npm:12.0.0-pre"
"@grafana/runtime": "npm:12.0.0-pre"
"@grafana/schema": "npm:12.0.0-pre"
"@grafana/ui": "npm:12.0.0-pre"
"@grafana/data": "npm:12.0.1"
"@grafana/plugin-configs": "npm:12.0.1"
"@grafana/runtime": "npm:12.0.1"
"@grafana/schema": "npm:12.0.1"
"@grafana/ui": "npm:12.0.1"
"@testing-library/dom": "npm:10.4.0"
"@testing-library/react": "npm:16.2.0"
"@testing-library/user-event": "npm:14.6.1"
@@ -2766,14 +2766,14 @@ __metadata:
resolution: "@grafana-plugins/stackdriver@workspace:public/app/plugins/datasource/cloud-monitoring"
dependencies:
"@emotion/css": "npm:11.13.5"
"@grafana/data": "npm:12.0.0-pre"
"@grafana/e2e-selectors": "npm:12.0.0-pre"
"@grafana/data": "npm:12.0.1"
"@grafana/e2e-selectors": "npm:12.0.1"
"@grafana/google-sdk": "npm:0.1.2"
"@grafana/plugin-configs": "npm:12.0.0-pre"
"@grafana/plugin-configs": "npm:12.0.1"
"@grafana/plugin-ui": "npm:0.10.5"
"@grafana/runtime": "npm:12.0.0-pre"
"@grafana/schema": "npm:12.0.0-pre"
"@grafana/ui": "npm:12.0.0-pre"
"@grafana/runtime": "npm:12.0.1"
"@grafana/schema": "npm:12.0.1"
"@grafana/ui": "npm:12.0.1"
"@testing-library/dom": "npm:10.4.0"
"@testing-library/jest-dom": "npm:6.6.3"
"@testing-library/react": "npm:16.2.0"
@@ -2818,7 +2818,7 @@ __metadata:
"@grafana/lezer-traceql": "npm:0.0.21"
"@grafana/monaco-logql": "npm:^0.0.8"
"@grafana/o11y-ds-frontend": "workspace:*"
"@grafana/plugin-configs": "npm:12.0.0-pre"
"@grafana/plugin-configs": "npm:12.0.1"
"@grafana/plugin-ui": "npm:0.10.5"
"@grafana/runtime": "workspace:*"
"@grafana/schema": "workspace:*"
@@ -2931,12 +2931,12 @@ __metadata:
languageName: node
linkType: hard
"@grafana/data@npm:12.0.0-pre, @grafana/data@workspace:*, @grafana/data@workspace:packages/grafana-data":
"@grafana/data@npm:12.0.1, @grafana/data@workspace:*, @grafana/data@workspace:packages/grafana-data":
version: 0.0.0-use.local
resolution: "@grafana/data@workspace:packages/grafana-data"
dependencies:
"@braintree/sanitize-url": "npm:7.0.1"
"@grafana/schema": "npm:12.0.0-pre"
"@grafana/schema": "npm:12.0.1"
"@grafana/tsconfig": "npm:^2.0.0"
"@rollup/plugin-node-resolve": "npm:16.0.0"
"@types/d3-interpolate": "npm:^3.0.0"
@@ -2984,7 +2984,7 @@ __metadata:
languageName: unknown
linkType: soft
"@grafana/e2e-selectors@npm:12.0.0-pre, @grafana/e2e-selectors@workspace:*, @grafana/e2e-selectors@workspace:packages/grafana-e2e-selectors":
"@grafana/e2e-selectors@npm:12.0.1, @grafana/e2e-selectors@workspace:*, @grafana/e2e-selectors@workspace:packages/grafana-e2e-selectors":
version: 0.0.0-use.local
resolution: "@grafana/e2e-selectors@workspace:packages/grafana-e2e-selectors"
dependencies:
@@ -3087,9 +3087,9 @@ __metadata:
"@babel/preset-env": "npm:7.26.9"
"@babel/preset-react": "npm:7.26.3"
"@emotion/css": "npm:11.13.5"
"@grafana/data": "npm:12.0.0-pre"
"@grafana/data": "npm:12.0.1"
"@grafana/tsconfig": "npm:^2.0.0"
"@grafana/ui": "npm:12.0.0-pre"
"@grafana/ui": "npm:12.0.1"
"@leeoniya/ufuzzy": "npm:1.0.18"
"@rollup/plugin-node-resolve": "npm:16.0.0"
"@testing-library/dom": "npm:10.4.0"
@@ -3196,13 +3196,13 @@ __metadata:
resolution: "@grafana/o11y-ds-frontend@workspace:packages/grafana-o11y-ds-frontend"
dependencies:
"@emotion/css": "npm:11.13.5"
"@grafana/data": "npm:12.0.0-pre"
"@grafana/e2e-selectors": "npm:12.0.0-pre"
"@grafana/data": "npm:12.0.1"
"@grafana/e2e-selectors": "npm:12.0.1"
"@grafana/plugin-ui": "npm:0.10.5"
"@grafana/runtime": "npm:12.0.0-pre"
"@grafana/schema": "npm:12.0.0-pre"
"@grafana/runtime": "npm:12.0.1"
"@grafana/schema": "npm:12.0.1"
"@grafana/tsconfig": "npm:^2.0.0"
"@grafana/ui": "npm:12.0.0-pre"
"@grafana/ui": "npm:12.0.1"
"@testing-library/dom": "npm:10.4.0"
"@testing-library/jest-dom": "npm:^6.1.2"
"@testing-library/react": "npm:16.2.0"
@@ -3226,7 +3226,7 @@ __metadata:
languageName: unknown
linkType: soft
"@grafana/plugin-configs@npm:12.0.0-pre, @grafana/plugin-configs@workspace:*, @grafana/plugin-configs@workspace:packages/grafana-plugin-configs":
"@grafana/plugin-configs@npm:12.0.1, @grafana/plugin-configs@workspace:*, @grafana/plugin-configs@workspace:packages/grafana-plugin-configs":
version: 0.0.0-use.local
resolution: "@grafana/plugin-configs@workspace:packages/grafana-plugin-configs"
dependencies:
@@ -3326,13 +3326,13 @@ __metadata:
dependencies:
"@emotion/css": "npm:11.13.5"
"@floating-ui/react": "npm:0.27.7"
"@grafana/data": "npm:12.0.0-pre"
"@grafana/e2e-selectors": "npm:12.0.0-pre"
"@grafana/data": "npm:12.0.1"
"@grafana/e2e-selectors": "npm:12.0.1"
"@grafana/plugin-ui": "npm:0.10.5"
"@grafana/runtime": "npm:12.0.0-pre"
"@grafana/schema": "npm:12.0.0-pre"
"@grafana/runtime": "npm:12.0.1"
"@grafana/schema": "npm:12.0.1"
"@grafana/tsconfig": "npm:^2.0.0"
"@grafana/ui": "npm:12.0.0-pre"
"@grafana/ui": "npm:12.0.1"
"@hello-pangea/dnd": "npm:17.0.0"
"@leeoniya/ufuzzy": "npm:1.0.18"
"@lezer/common": "npm:1.2.3"
@@ -3388,16 +3388,16 @@ __metadata:
languageName: unknown
linkType: soft
"@grafana/runtime@npm:12.0.0-pre, @grafana/runtime@workspace:*, @grafana/runtime@workspace:packages/grafana-runtime":
"@grafana/runtime@npm:12.0.1, @grafana/runtime@workspace:*, @grafana/runtime@workspace:packages/grafana-runtime":
version: 0.0.0-use.local
resolution: "@grafana/runtime@workspace:packages/grafana-runtime"
dependencies:
"@grafana/data": "npm:12.0.0-pre"
"@grafana/e2e-selectors": "npm:12.0.0-pre"
"@grafana/data": "npm:12.0.1"
"@grafana/e2e-selectors": "npm:12.0.1"
"@grafana/faro-web-sdk": "npm:^1.13.2"
"@grafana/schema": "npm:12.0.0-pre"
"@grafana/schema": "npm:12.0.1"
"@grafana/tsconfig": "npm:^2.0.0"
"@grafana/ui": "npm:12.0.0-pre"
"@grafana/ui": "npm:12.0.1"
"@rollup/plugin-node-resolve": "npm:16.0.0"
"@rollup/plugin-terser": "npm:0.4.4"
"@testing-library/dom": "npm:10.4.0"
@@ -3510,7 +3510,7 @@ __metadata:
languageName: node
linkType: hard
"@grafana/schema@npm:12.0.0-pre, @grafana/schema@workspace:*, @grafana/schema@workspace:packages/grafana-schema":
"@grafana/schema@npm:12.0.1, @grafana/schema@workspace:*, @grafana/schema@workspace:packages/grafana-schema":
version: 0.0.0-use.local
resolution: "@grafana/schema@workspace:packages/grafana-schema"
dependencies:
@@ -3528,17 +3528,17 @@ __metadata:
languageName: unknown
linkType: soft
"@grafana/sql@npm:12.0.0-pre, @grafana/sql@workspace:*, @grafana/sql@workspace:packages/grafana-sql":
"@grafana/sql@npm:12.0.1, @grafana/sql@workspace:*, @grafana/sql@workspace:packages/grafana-sql":
version: 0.0.0-use.local
resolution: "@grafana/sql@workspace:packages/grafana-sql"
dependencies:
"@emotion/css": "npm:11.13.5"
"@grafana/data": "npm:12.0.0-pre"
"@grafana/e2e-selectors": "npm:12.0.0-pre"
"@grafana/data": "npm:12.0.1"
"@grafana/e2e-selectors": "npm:12.0.1"
"@grafana/plugin-ui": "npm:0.10.5"
"@grafana/runtime": "npm:12.0.0-pre"
"@grafana/runtime": "npm:12.0.1"
"@grafana/tsconfig": "npm:^2.0.0"
"@grafana/ui": "npm:12.0.0-pre"
"@grafana/ui": "npm:12.0.1"
"@react-awesome-query-builder/ui": "npm:6.6.14"
"@testing-library/dom": "npm:10.4.0"
"@testing-library/jest-dom": "npm:^6.1.2"
@@ -3579,7 +3579,7 @@ __metadata:
languageName: node
linkType: hard
"@grafana/ui@npm:12.0.0-pre, @grafana/ui@workspace:*, @grafana/ui@workspace:packages/grafana-ui":
"@grafana/ui@npm:12.0.1, @grafana/ui@workspace:*, @grafana/ui@workspace:packages/grafana-ui":
version: 0.0.0-use.local
resolution: "@grafana/ui@workspace:packages/grafana-ui"
dependencies:
@@ -3589,10 +3589,10 @@ __metadata:
"@emotion/serialize": "npm:1.3.3"
"@faker-js/faker": "npm:^9.0.0"
"@floating-ui/react": "npm:0.27.7"
"@grafana/data": "npm:12.0.0-pre"
"@grafana/e2e-selectors": "npm:12.0.0-pre"
"@grafana/data": "npm:12.0.1"
"@grafana/e2e-selectors": "npm:12.0.1"
"@grafana/faro-web-sdk": "npm:^1.13.2"
"@grafana/schema": "npm:12.0.0-pre"
"@grafana/schema": "npm:12.0.1"
"@grafana/tsconfig": "npm:^2.0.0"
"@hello-pangea/dnd": "npm:17.0.0"
"@leeoniya/ufuzzy": "npm:1.0.18"