diff --git a/.betterer.results b/.betterer.results index f425117df77..d9d65527c0d 100644 --- a/.betterer.results +++ b/.betterer.results @@ -5291,6 +5291,12 @@ exports[`better eslint`] = { [0, 0, 0, "Styles should be written using objects.", "18"], [0, 0, 0, "Styles should be written using objects.", "19"] ], + "public/app/plugins/datasource/prometheus/configuration/ConfigEditorPackage.tsx:5381": [ + [0, 0, 0, "Unexpected any. Specify a different type.", "0"], + [0, 0, 0, "Unexpected any. Specify a different type.", "1"], + [0, 0, 0, "Unexpected any. Specify a different type.", "2"], + [0, 0, 0, "Unexpected any. Specify a different type.", "3"] + ], "public/app/plugins/datasource/prometheus/configuration/ExemplarsSettings.tsx:5381": [ [0, 0, 0, "Styles should be written using objects.", "0"] ], diff --git a/docs/sources/setup-grafana/configure-grafana/feature-toggles/index.md b/docs/sources/setup-grafana/configure-grafana/feature-toggles/index.md index 7cbd9ef903c..259d89a3be6 100644 --- a/docs/sources/setup-grafana/configure-grafana/feature-toggles/index.md +++ b/docs/sources/setup-grafana/configure-grafana/feature-toggles/index.md @@ -173,6 +173,7 @@ Experimental features might be changed or removed without prior notice. | `nodeGraphDotLayout` | Changed the layout algorithm for the node graph | | `kubernetesAggregator` | Enable grafana aggregator | | `expressionParser` | Enable new expression parser | +| `usePrometheusFrontendPackage` | Use the @grafana/prometheus frontend package in core Prometheus. | ## Development feature toggles diff --git a/e2e/various-suite/exemplars.spec.ts b/e2e/various-suite/exemplars.spec.ts index 60f58386520..b3c422c1294 100644 --- a/e2e/various-suite/exemplars.spec.ts +++ b/e2e/various-suite/exemplars.spec.ts @@ -11,7 +11,7 @@ const addDataSource = () => { e2e.components.DataSource.Prometheus.configPage.exemplarsAddButton().click(); e2e.components.DataSource.Prometheus.configPage.internalLinkSwitch().check({ force: true }); e2e.components.DataSource.Prometheus.configPage.connectionSettings().type('http://prom-url:9090'); - e2e.components.DataSourcePicker.inputV2().click().should('have.focus'); + cy.get('[data-testid="data-testid Data source picker select container"]').click(); cy.contains('gdev-tempo').scrollIntoView().should('be.visible').click(); }, diff --git a/go.work.sum b/go.work.sum index ee9ffb73009..b5e3fdc5590 100644 --- a/go.work.sum +++ b/go.work.sum @@ -409,6 +409,7 @@ github.com/grafana/gomemcache v0.0.0-20231023152154-6947259a0586 h1:/of8Z8taCPft github.com/grafana/gomemcache v0.0.0-20231023152154-6947259a0586/go.mod h1:PGk3RjYHpxMM8HFPhKKo+vve3DdlPUELZLSDEFehPuU= github.com/grafana/grafana-plugin-sdk-go v0.212.0/go.mod h1:qsI4ktDf0lig74u8SLPJf9zRdVxWV/W4Wi+Ox6gifgs= github.com/grafana/grafana-plugin-sdk-go v0.215.0/go.mod h1:nBsh3jRItKQUXDF2BQkiQCPxqrsSQeb+7hiFyJTO1RE= +github.com/grafana/grafana-plugin-sdk-go v0.216.0/go.mod h1:FdvSvOliqpVLnytM7e89zCFyYPDE6VOn9SIjVQRvVxM= github.com/grafana/grafana/pkg/promlib v0.0.3/go.mod h1:3El4NlsfALz8QQCbEGHGFvJUG+538QLMuALRhZ3pcoo= github.com/grafana/grafana/pkg/promlib v0.0.4/go.mod h1:621zjsCaFtP7mqqaiMJRN9h3SXrywAMaIPkeHvq3jsk= github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7 h1:pdN6V1QBWetyv/0+wjACpqVH+eVULgEjkurDLq3goeM= @@ -836,4 +837,4 @@ rsc.io/binaryregexp v0.2.0 h1:HfqmD5MEmC0zvwBuF187nq9mdnXjXsSivRiXN7SmRkE= rsc.io/pdf v0.1.1 h1:k1MczvYDUvJBe93bYd7wrZLLUEcLZAuF824/I4e5Xr4= rsc.io/quote/v3 v3.1.0 h1:9JKUTTIUgS6kzR9mK1YuGKv6Nl+DijDNIc0ghT58FaY= rsc.io/sampler v1.3.0 h1:7uVkIFmeBqHfdjD+gZwtXXI+RODJ2Wc4O7MPEh/QiW4= -sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0 h1:ucqkfpjg9WzSUubAO62csmucvxl4/JeW3F4I4909XkM= \ No newline at end of file +sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0 h1:ucqkfpjg9WzSUubAO62csmucvxl4/JeW3F4I4909XkM= diff --git a/packages/grafana-data/src/types/featureToggles.gen.ts b/packages/grafana-data/src/types/featureToggles.gen.ts index 026b2d51182..7077d72318f 100644 --- a/packages/grafana-data/src/types/featureToggles.gen.ts +++ b/packages/grafana-data/src/types/featureToggles.gen.ts @@ -175,4 +175,5 @@ export interface FeatureToggles { betterPageScrolling?: boolean; scopeFilters?: boolean; ssoSettingsSAML?: boolean; + usePrometheusFrontendPackage?: boolean; } diff --git a/pkg/services/featuremgmt/registry.go b/pkg/services/featuremgmt/registry.go index 6f8cae8fcf5..fd2e9d2b757 100644 --- a/pkg/services/featuremgmt/registry.go +++ b/pkg/services/featuremgmt/registry.go @@ -1174,6 +1174,13 @@ var ( HideFromDocs: true, HideFromAdminPage: true, }, + { + Name: "usePrometheusFrontendPackage", + Description: "Use the @grafana/prometheus frontend package in core Prometheus.", + Stage: FeatureStageExperimental, + FrontendOnly: true, + Owner: grafanaObservabilityMetricsSquad, + }, } ) diff --git a/pkg/services/featuremgmt/toggles_gen.csv b/pkg/services/featuremgmt/toggles_gen.csv index 14c17a8665b..ef8fba63753 100644 --- a/pkg/services/featuremgmt/toggles_gen.csv +++ b/pkg/services/featuremgmt/toggles_gen.csv @@ -156,3 +156,4 @@ groupByVariable,experimental,@grafana/dashboards-squad,false,false,false betterPageScrolling,GA,@grafana/grafana-frontend-platform,false,false,true scopeFilters,experimental,@grafana/dashboards-squad,false,false,false ssoSettingsSAML,experimental,@grafana/identity-access-team,false,false,false +usePrometheusFrontendPackage,experimental,@grafana/observability-metrics,false,false,true diff --git a/pkg/services/featuremgmt/toggles_gen.go b/pkg/services/featuremgmt/toggles_gen.go index a910d864773..c36891a4b18 100644 --- a/pkg/services/featuremgmt/toggles_gen.go +++ b/pkg/services/featuremgmt/toggles_gen.go @@ -634,4 +634,8 @@ const ( // FlagSsoSettingsSAML // Use the new SSO Settings API to configure the SAML connector FlagSsoSettingsSAML = "ssoSettingsSAML" + + // FlagUsePrometheusFrontendPackage + // Use the @grafana/prometheus frontend package in core Prometheus. + FlagUsePrometheusFrontendPackage = "usePrometheusFrontendPackage" ) diff --git a/pkg/services/featuremgmt/toggles_gen.json b/pkg/services/featuremgmt/toggles_gen.json index 57b0ce7c6e7..6f266879070 100644 --- a/pkg/services/featuremgmt/toggles_gen.json +++ b/pkg/services/featuremgmt/toggles_gen.json @@ -3,1485 +3,11 @@ "apiVersion": "featuretoggle.grafana.app/v0alpha1", "metadata": {}, "items": [ - { - "metadata": { - "name": "nestedFolderPicker", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Enables the new folder picker to work with nested folders. Requires the nestedFolders feature toggle", - "stage": "GA", - "codeowner": "@grafana/grafana-frontend-platform", - "frontend": true, - "allowSelfServe": true - } - }, - { - "metadata": { - "name": "alertingBacktesting", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Rule backtesting API for alerting", - "stage": "experimental", - "codeowner": "@grafana/alerting-squad" - } - }, - { - "metadata": { - "name": "featureToggleAdminPage", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Enable admin page for managing feature toggles from the Grafana front-end", - "stage": "experimental", - "codeowner": "@grafana/grafana-operator-experience-squad", - "requiresRestart": true - } - }, - { - "metadata": { - "name": "logsInfiniteScrolling", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Enables infinite scrolling for the Logs panel in Explore and Dashboards", - "stage": "experimental", - "codeowner": "@grafana/observability-logs", - "frontend": true - } - }, - { - "metadata": { - "name": "alertingPreviewUpgrade", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z", - "deletionTimestamp": "2024-03-11T16:22:16Z" - }, - "spec": { - "description": "Show Unified Alerting preview and upgrade page in legacy alerting", - "stage": "GA", - "codeowner": "@grafana/alerting-squad", - "requiresRestart": true - } - }, - { - "metadata": { - "name": "cloudRBACRoles", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Enabled grafana cloud specific RBAC roles", - "stage": "experimental", - "codeowner": "@grafana/identity-access-team", - "requiresRestart": true, - "hideFromDocs": true - } - }, - { - "metadata": { - "name": "awsDatasourcesTempCredentials", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Support temporary security credentials in AWS plugins for Grafana Cloud customers", - "stage": "experimental", - "codeowner": "@grafana/aws-datasources" - } - }, - { - "metadata": { - "name": "externalServiceAccounts", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Automatic service account and token setup for plugins", - "stage": "preview", - "codeowner": "@grafana/identity-access-team", - "hideFromAdminPage": true - } - }, - { - "metadata": { - "name": "transformationsVariableSupport", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Allows using variables in transformations", - "stage": "preview", - "codeowner": "@grafana/dataviz-squad", - "frontend": true - } - }, - { - "metadata": { - "name": "panelTitleSearch", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Search for dashboards using panel title", - "stage": "preview", - "codeowner": "@grafana/grafana-app-platform-squad", - "hideFromAdminPage": true - } - }, - { - "metadata": { - "name": "enableDatagridEditing", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Enables the edit functionality in the datagrid panel", - "stage": "preview", - "codeowner": "@grafana/dataviz-squad", - "frontend": true - } - }, - { - "metadata": { - "name": "traceQLStreaming", - "resourceVersion": "1710172794391", - "creationTimestamp": "2024-03-05T14:17:16Z", - "annotations": { - "grafana.app/updatedTimestamp": "2024-03-11 15:59:54.391734 +0000 UTC" - } - }, - "spec": { - "description": "Enables response streaming of TraceQL queries of the Tempo data source", - "stage": "GA", - "codeowner": "@grafana/observability-traces-and-profiling", - "frontend": true - } - }, - { - "metadata": { - "name": "metricsSummary", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Enables metrics summary queries in the Tempo data source", - "stage": "experimental", - "codeowner": "@grafana/observability-traces-and-profiling", - "frontend": true - } - }, - { - "metadata": { - "name": "sseGroupByDatasource", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Send query to the same datasource in a single request when using server side expressions. The `cloudWatchBatchQueries` feature toggle should be enabled if this used with CloudWatch.", - "stage": "experimental", - "codeowner": "@grafana/observability-metrics" - } - }, - { - "metadata": { - "name": "live-service-web-worker", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "This will use a webworker thread to processes events rather than the main thread", - "stage": "experimental", - "codeowner": "@grafana/grafana-app-platform-squad", - "frontend": true - } - }, - { - "metadata": { - "name": "canvasPanelNesting", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Allow elements nesting", - "stage": "experimental", - "codeowner": "@grafana/dataviz-squad", - "frontend": true, - "hideFromAdminPage": true - } - }, - { - "metadata": { - "name": "enableElasticsearchBackendQuerying", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Enable the processing of queries and responses in the Elasticsearch data source through backend", - "stage": "GA", - "codeowner": "@grafana/observability-logs", - "allowSelfServe": true - } - }, - { - "metadata": { - "name": "extractFieldsNameDeduplication", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Make sure extracted field names are unique in the dataframe", - "stage": "experimental", - "codeowner": "@grafana/dataviz-squad", - "frontend": true - } - }, - { - "metadata": { - "name": "alertStateHistoryLokiPrimary", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Enable a remote Loki instance as the primary source for state history reads.", - "stage": "experimental", - "codeowner": "@grafana/alerting-squad" - } - }, - { - "metadata": { - "name": "dashboardEmbed", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Allow embedding dashboard for external use in Code editors", - "stage": "experimental", - "codeowner": "@grafana/grafana-as-code", - "frontend": true - } - }, - { - "metadata": { - "name": "sqlDatasourceDatabaseSelection", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Enables previous SQL data source dataset dropdown behavior", - "stage": "preview", - "codeowner": "@grafana/dataviz-squad", - "frontend": true, - "hideFromAdminPage": true - } - }, - { - "metadata": { - "name": "permissionsFilterRemoveSubquery", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Alternative permission filter implementation that does not use subqueries for fetching the dashboard folder", - "stage": "experimental", - "codeowner": "@grafana/backend-platform" - } - }, - { - "metadata": { - "name": "awsDatasourcesNewFormStyling", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Applies new form styling for configuration and query editors in AWS plugins", - "stage": "preview", - "codeowner": "@grafana/aws-datasources", - "frontend": true - } - }, - { - "metadata": { - "name": "prometheusPromQAIL", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Prometheus and AI/ML to assist users in creating a query", - "stage": "experimental", - "codeowner": "@grafana/observability-metrics", - "frontend": true - } - }, - { - "metadata": { - "name": "scopeFilters", - "resourceVersion": "1709648534592", - "creationTimestamp": "2024-03-05T14:17:16Z", - "annotations": { - "grafana.app/updatedTimestamp": "2024-03-05 14:22:14.592841 +0000 UTC" - } - }, - "spec": { - "description": "Enables the use of scope filters in Grafana", - "stage": "experimental", - "codeowner": "@grafana/dashboards-squad", - "hideFromAdminPage": true, - "hideFromDocs": true - } - }, - { - "metadata": { - "name": "renderAuthJWT", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Uses JWT-based auth for rendering instead of relying on remote cache", - "stage": "preview", - "codeowner": "@grafana/grafana-as-code", - "hideFromAdminPage": true - } - }, - { - "metadata": { - "name": "groupToNestedTableTransformation", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Enables the group to nested table transformation", - "stage": "preview", - "codeowner": "@grafana/dataviz-squad", - "frontend": true - } - }, - { - "metadata": { - "name": "autoMigrateOldPanels", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Migrate old angular panels to supported versions (graph, table-old, worldmap, etc)", - "stage": "preview", - "codeowner": "@grafana/dataviz-squad", - "frontend": true - } - }, - { - "metadata": { - "name": "showDashboardValidationWarnings", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Show warnings when dashboards do not validate against the schema", - "stage": "experimental", - "codeowner": "@grafana/dashboards-squad" - } - }, - { - "metadata": { - "name": "alertmanagerRemoteSecondary", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Enable Grafana to sync configuration and state with a remote Alertmanager.", - "stage": "experimental", - "codeowner": "@grafana/alerting-squad" - } - }, - { - "metadata": { - "name": "disableAngular", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Dynamic flag to disable angular at runtime. The preferred method is to set `angular_support_enabled` to `false` in the [security] settings, which allows you to change the state at runtime.", - "stage": "preview", - "codeowner": "@grafana/dataviz-squad", - "frontend": true, - "hideFromAdminPage": true - } - }, - { - "metadata": { - "name": "disableSecretsCompatibility", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Disable duplicated secret storage in legacy tables", - "stage": "experimental", - "codeowner": "@grafana/hosted-grafana-team", - "requiresRestart": true - } - }, - { - "metadata": { - "name": "alertingNoNormalState", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Stop maintaining state of alerts that are not firing", - "stage": "preview", - "codeowner": "@grafana/alerting-squad", - "hideFromAdminPage": true - } - }, - { - "metadata": { - "name": "pluginsDynamicAngularDetectionPatterns", - "resourceVersion": "1710847676897", - "creationTimestamp": "2024-03-05T14:17:16Z", - "annotations": { - "grafana.app/updatedTimestamp": "2024-03-19 11:27:56.897962695 +0000 UTC" - } - }, - "spec": { - "description": "Enables fetching Angular detection patterns for plugins from GCOM and fallback to hardcoded ones", - "stage": "GA", - "codeowner": "@grafana/plugins-platform-backend" - } - }, - { - "metadata": { - "name": "jitterAlertRulesWithinGroups", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Distributes alert rule evaluations more evenly over time, including spreading out rules within the same group", - "stage": "preview", - "codeowner": "@grafana/alerting-squad", - "requiresRestart": true, - "hideFromDocs": true - } - }, - { - "metadata": { - "name": "storage", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Configurable storage for dashboards, datasources, and resources", - "stage": "experimental", - "codeowner": "@grafana/grafana-app-platform-squad" - } - }, - { - "metadata": { - "name": "autoMigratePiechartPanel", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Migrate old piechart panel to supported piechart panel - broken out from autoMigrateOldPanels to enable granular tracking", - "stage": "preview", - "codeowner": "@grafana/dataviz-squad", - "frontend": true - } - }, - { - "metadata": { - "name": "autoMigrateWorldmapPanel", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Migrate old worldmap panel to supported geomap panel - broken out from autoMigrateOldPanels to enable granular tracking", - "stage": "preview", - "codeowner": "@grafana/dataviz-squad", - "frontend": true - } - }, - { - "metadata": { - "name": "redshiftAsyncQueryDataSupport", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z", - "deletionTimestamp": "2024-03-18T12:15:18Z" - }, - "spec": { - "description": "Enable async query data support for Redshift", - "stage": "GA", - "codeowner": "@grafana/aws-datasources" - } - }, - { - "metadata": { - "name": "influxdbBackendMigration", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Query InfluxDB InfluxQL without the proxy", - "stage": "GA", - "codeowner": "@grafana/observability-metrics", - "frontend": true - } - }, - { - "metadata": { - "name": "lokiLogsDataplane", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Changes logs responses from Loki to be compliant with the dataplane specification.", - "stage": "experimental", - "codeowner": "@grafana/observability-logs" - } - }, - { - "metadata": { - "name": "pluginsFrontendSandbox", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Enables the plugins frontend sandbox", - "stage": "experimental", - "codeowner": "@grafana/plugins-platform-backend", - "frontend": true - } - }, - { - "metadata": { - "name": "alertingNoDataErrorExecution", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Changes how Alerting state manager handles execution of NoData/Error", - "stage": "GA", - "codeowner": "@grafana/alerting-squad", - "requiresRestart": true - } - }, - { - "metadata": { - "name": "nodeGraphDotLayout", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Changed the layout algorithm for the node graph", - "stage": "experimental", - "codeowner": "@grafana/observability-traces-and-profiling", - "frontend": true - } - }, - { - "metadata": { - "name": "accessControlOnCall", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Access control primitives for OnCall", - "stage": "preview", - "codeowner": "@grafana/identity-access-team", - "hideFromAdminPage": true - } - }, - { - "metadata": { - "name": "prometheusDataplane", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Changes responses to from Prometheus to be compliant with the dataplane specification. In particular, when this feature toggle is active, the numeric `Field.Name` is set from 'Value' to the value of the `__name__` label.", - "stage": "GA", - "codeowner": "@grafana/observability-metrics", - "allowSelfServe": true - } - }, - { - "metadata": { - "name": "vizAndWidgetSplit", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Split panels between visualizations and widgets", - "stage": "experimental", - "codeowner": "@grafana/dashboards-squad", - "frontend": true - } - }, - { - "metadata": { - "name": "reportingRetries", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Enables rendering retries for the reporting feature", - "stage": "preview", - "codeowner": "@grafana/sharing-squad", - "requiresRestart": true - } - }, - { - "metadata": { - "name": "panelTitleSearchInV1", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Enable searching for dashboards using panel title in search v1", - "stage": "experimental", - "codeowner": "@grafana/backend-platform", - "requiresDevMode": true - } - }, - { - "metadata": { - "name": "alertingUpgradeDryrunOnStart", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z", - "deletionTimestamp": "2024-03-11T16:22:16Z" - }, - "spec": { - "description": "When activated in legacy alerting mode, this initiates a dry-run of the Unified Alerting upgrade during each startup. It logs any issues detected without implementing any actual changes.", - "stage": "GA", - "codeowner": "@grafana/alerting-squad", - "requiresRestart": true - } - }, - { - "metadata": { - "name": "topnav", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Enables topnav support in external plugins. The new Grafana navigation cannot be disabled.", - "stage": "deprecated", - "codeowner": "@grafana/grafana-frontend-platform" - } - }, - { - "metadata": { - "name": "grpcServer", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Run the GRPC server", - "stage": "preview", - "codeowner": "@grafana/grafana-app-platform-squad", - "hideFromAdminPage": true - } - }, - { - "metadata": { - "name": "influxdbRunQueriesInParallel", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Enables running InfluxDB Influxql queries in parallel", - "stage": "privatePreview", - "codeowner": "@grafana/observability-metrics" - } - }, - { - "metadata": { - "name": "lokiPredefinedOperations", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Adds predefined query operations to Loki query editor", - "stage": "experimental", - "codeowner": "@grafana/observability-logs", - "frontend": true - } - }, - { - "metadata": { - "name": "kubernetesQueryServiceRewrite", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Rewrite requests targeting /ds/query to the query service", - "stage": "experimental", - "codeowner": "@grafana/grafana-app-platform-squad", - "requiresDevMode": true, - "requiresRestart": true - } - }, - { - "metadata": { - "name": "alertmanagerRemoteOnly", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Disable the internal Alertmanager and only use the external one defined.", - "stage": "experimental", - "codeowner": "@grafana/alerting-squad" - } - }, - { - "metadata": { - "name": "cloudWatchCrossAccountQuerying", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Enables cross-account querying in CloudWatch datasources", - "stage": "GA", - "codeowner": "@grafana/aws-datasources", - "allowSelfServe": true - } - }, - { - "metadata": { - "name": "prometheusMetricEncyclopedia", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Adds the metrics explorer component to the Prometheus query builder as an option in metric select", - "stage": "GA", - "codeowner": "@grafana/observability-metrics", - "frontend": true, - "allowSelfServe": true - } - }, - { - "metadata": { - "name": "addFieldFromCalculationStatFunctions", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Add cumulative and window functions to the add field from calculation transformation", - "stage": "preview", - "codeowner": "@grafana/dataviz-squad", - "frontend": true - } - }, - { - "metadata": { - "name": "annotationPermissionUpdate", - "resourceVersion": "1710885868422", - "creationTimestamp": "2024-03-05T14:17:16Z", - "annotations": { - "grafana.app/updatedTimestamp": "2024-03-19 22:04:28.422555 +0000 UTC" - } - }, - "spec": { - "description": "Change the way annotation permissions work by scoping them to folders and dashboards.", - "stage": "GA", - "codeowner": "@grafana/identity-access-team" - } - }, - { - "metadata": { - "name": "scenes", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Experimental framework to build interactive dashboards", - "stage": "experimental", - "codeowner": "@grafana/dashboards-squad", - "frontend": true - } - }, - { - "metadata": { - "name": "influxqlStreamingParser", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Enable streaming JSON parser for InfluxDB datasource InfluxQL query language", - "stage": "experimental", - "codeowner": "@grafana/observability-metrics" - } - }, - { - "metadata": { - "name": "unifiedRequestLog", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Writes error logs to the request logger", - "stage": "experimental", - "codeowner": "@grafana/backend-platform" - } - }, - { - "metadata": { - "name": "faroDatasourceSelector", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Enable the data source selector within the Frontend Apps section of the Frontend Observability", - "stage": "preview", - "codeowner": "@grafana/app-o11y", - "frontend": true - } - }, - { - "metadata": { - "name": "mlExpressions", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Enable support for Machine Learning in server-side expressions", - "stage": "experimental", - "codeowner": "@grafana/alerting-squad" - } - }, - { - "metadata": { - "name": "prometheusConfigOverhaulAuth", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Update the Prometheus configuration page with the new auth component", - "stage": "GA", - "codeowner": "@grafana/observability-metrics" - } - }, - { - "metadata": { - "name": "panelMonitoring", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Enables panel monitoring through logs and measurements", - "stage": "GA", - "codeowner": "@grafana/dataviz-squad", - "frontend": true - } - }, - { - "metadata": { - "name": "cachingOptimizeSerializationMemoryUsage", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "If enabled, the caching backend gradually serializes query responses for the cache, comparing against the configured `[caching]max_value_mb` value as it goes. This can can help prevent Grafana from running out of memory while attempting to cache very large query responses.", - "stage": "experimental", - "codeowner": "@grafana/grafana-operator-experience-squad" - } - }, - { - "metadata": { - "name": "kubernetesAggregator", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Enable grafana aggregator", - "stage": "experimental", - "codeowner": "@grafana/grafana-app-platform-squad", - "requiresRestart": true - } - }, - { - "metadata": { - "name": "refactorVariablesTimeRange", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Refactor time range variables flow to reduce number of API calls made when query variables are chained", - "stage": "preview", - "codeowner": "@grafana/dashboards-squad", - "hideFromAdminPage": true - } - }, - { - "metadata": { - "name": "recordedQueriesMulti", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Enables writing multiple items from a single query within Recorded Queries", - "stage": "GA", - "codeowner": "@grafana/observability-metrics" - } - }, - { - "metadata": { - "name": "logsExploreTableVisualisation", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "A table visualisation for logs in Explore", - "stage": "GA", - "codeowner": "@grafana/observability-logs", - "frontend": true - } - }, - { - "metadata": { - "name": "dashgpt", - "resourceVersion": "1711038841830", - "creationTimestamp": "2024-03-05T14:17:16Z", - "annotations": { - "grafana.app/updatedTimestamp": "2024-03-21 16:34:01.830925 +0000 UTC" - } - }, - "spec": { - "description": "Enable AI powered features in dashboards", - "stage": "GA", - "codeowner": "@grafana/dashboards-squad", - "frontend": true - } - }, - { - "metadata": { - "name": "wargamesTesting", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Placeholder feature flag for internal testing", - "stage": "experimental", - "codeowner": "@grafana/hosted-grafana-team" - } - }, - { - "metadata": { - "name": "enablePluginsTracingByDefault", - "resourceVersion": "1710760980171", - "creationTimestamp": "2024-03-05T14:17:16Z", - "annotations": { - "grafana.app/updatedTimestamp": "2024-03-18 11:23:00.171105276 +0000 UTC" - } - }, - "spec": { - "description": "Enable plugin tracing for all external plugins", - "stage": "GA", - "codeowner": "@grafana/plugins-platform-backend", - "requiresRestart": true - } - }, - { - "metadata": { - "name": "mysqlAnsiQuotes", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Use double quotes to escape keyword in a MySQL query", - "stage": "experimental", - "codeowner": "@grafana/backend-platform" - } - }, - { - "metadata": { - "name": "lokiStructuredMetadata", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Enables the loki data source to request structured metadata from the Loki server", - "stage": "GA", - "codeowner": "@grafana/observability-logs" - } - }, - { - "metadata": { - "name": "alertingDetailsViewV2", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z", - "deletionTimestamp": "2024-03-12T12:33:03Z" - }, - "spec": { - "description": "Enables the preview of the new alert details view", - "stage": "experimental", - "codeowner": "@grafana/alerting-squad", - "frontend": true, - "hideFromDocs": true - } - }, - { - "metadata": { - "name": "regressionTransformation", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Enables regression analysis transformation", - "stage": "preview", - "codeowner": "@grafana/dataviz-squad", - "frontend": true - } - }, - { - "metadata": { - "name": "expressionParser", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Enable new expression parser", - "stage": "experimental", - "codeowner": "@grafana/grafana-app-platform-squad", - "requiresRestart": true - } - }, - { - "metadata": { - "name": "disableEnvelopeEncryption", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Disable envelope encryption (emergency only)", - "stage": "GA", - "codeowner": "@grafana/grafana-as-code", - "hideFromAdminPage": true - } - }, - { - "metadata": { - "name": "athenaAsyncQueryDataSupport", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z", - "deletionTimestamp": "2024-03-18T12:15:18Z" - }, - "spec": { - "description": "Enable async query data support for Athena", - "stage": "GA", - "codeowner": "@grafana/aws-datasources", - "frontend": true - } - }, - { - "metadata": { - "name": "logRowsPopoverMenu", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Enable filtering menu displayed when text of a log line is selected", - "stage": "GA", - "codeowner": "@grafana/observability-logs", - "frontend": true - } - }, - { - "metadata": { - "name": "nestedFolders", - "resourceVersion": "1710942166805", - "creationTimestamp": "2024-03-05T14:17:16Z", - "annotations": { - "grafana.app/updatedTimestamp": "2024-03-20 13:42:46.805804 +0000 UTC" - } - }, - "spec": { - "description": "Enable folder nesting", - "stage": "GA", - "codeowner": "@grafana/backend-platform" - } - }, - { - "metadata": { - "name": "ssoSettingsApi", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Enables the SSO settings API and the OAuth configuration UIs in Grafana", - "stage": "preview", - "codeowner": "@grafana/identity-access-team", - "allowSelfServe": true - } - }, - { - "metadata": { - "name": "alertingSaveStatePeriodic", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Writes the state periodically to the database, asynchronous to rule evaluation", - "stage": "privatePreview", - "codeowner": "@grafana/alerting-squad" - } - }, - { - "metadata": { - "name": "unifiedStorage", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "SQL-based k8s storage", - "stage": "experimental", - "codeowner": "@grafana/grafana-app-platform-squad", - "requiresDevMode": true, - "requiresRestart": true - } - }, - { - "metadata": { - "name": "frontendSandboxMonitorOnly", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Enables monitor only in the plugin frontend sandbox (if enabled)", - "stage": "experimental", - "codeowner": "@grafana/plugins-platform-backend", - "frontend": true - } - }, - { - "metadata": { - "name": "lokiRunQueriesInParallel", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Enables running Loki queries in parallel", - "stage": "privatePreview", - "codeowner": "@grafana/observability-logs" - } - }, - { - "metadata": { - "name": "queryOverLive", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Use Grafana Live WebSocket to execute backend queries", - "stage": "experimental", - "codeowner": "@grafana/grafana-app-platform-squad", - "frontend": true - } - }, - { - "metadata": { - "name": "logRequestsInstrumentedAsUnknown", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Logs the path for requests that are instrumented as unknown", - "stage": "experimental", - "codeowner": "@grafana/hosted-grafana-team" - } - }, - { - "metadata": { - "name": "alertStateHistoryLokiOnly", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Disable Grafana alerts from emitting annotations when a remote Loki instance is available.", - "stage": "experimental", - "codeowner": "@grafana/alerting-squad" - } - }, - { - "metadata": { - "name": "prometheusIncrementalQueryInstrumentation", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Adds RudderStack events to incremental queries", - "stage": "experimental", - "codeowner": "@grafana/observability-metrics", - "frontend": true - } - }, - { - "metadata": { - "name": "angularDeprecationUI", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Display Angular warnings in dashboards and panels", - "stage": "GA", - "codeowner": "@grafana/plugins-platform-backend", - "frontend": true - } - }, - { - "metadata": { - "name": "aiGeneratedDashboardChanges", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Enable AI powered features for dashboards to auto-summary changes when saving", - "stage": "experimental", - "codeowner": "@grafana/dashboards-squad", - "frontend": true - } - }, - { - "metadata": { - "name": "kubernetesPlaylists", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Use the kubernetes API in the frontend for playlists, and route /api/playlist requests to k8s", - "stage": "experimental", - "codeowner": "@grafana/grafana-app-platform-squad", - "requiresRestart": true - } - }, - { - "metadata": { - "name": "pdfTables", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Enables generating table data as PDF in reporting", - "stage": "preview", - "codeowner": "@grafana/sharing-squad" - } - }, - { - "metadata": { - "name": "tableSharedCrosshair", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Enables shared crosshair in table panel", - "stage": "experimental", - "codeowner": "@grafana/dataviz-squad", - "frontend": true - } - }, - { - "metadata": { - "name": "featureHighlights", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Highlight Grafana Enterprise features", - "stage": "GA", - "codeowner": "@grafana/grafana-as-code", - "allowSelfServe": true - } - }, - { - "metadata": { - "name": "alertStateHistoryLokiSecondary", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Enable Grafana to write alert state history to an external Loki instance in addition to Grafana annotations.", - "stage": "experimental", - "codeowner": "@grafana/alerting-squad" - } - }, - { - "metadata": { - "name": "transformationsRedesign", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Enables the transformations redesign", - "stage": "GA", - "codeowner": "@grafana/observability-metrics", - "frontend": true, - "allowSelfServe": true - } - }, - { - "metadata": { - "name": "kubernetesSnapshots", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Routes snapshot requests from /api to the /apis endpoint", - "stage": "experimental", - "codeowner": "@grafana/grafana-app-platform-squad", - "requiresRestart": true - } - }, - { - "metadata": { - "name": "pluginsSkipHostEnvVars", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Disables passing host environment variable to plugin processes", - "stage": "experimental", - "codeowner": "@grafana/plugins-platform-backend" - } - }, - { - "metadata": { - "name": "promQLScope", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "In-development feature that will allow injection of labels into prometheus queries.", - "stage": "experimental", - "codeowner": "@grafana/observability-metrics" - } - }, - { - "metadata": { - "name": "autoMigrateStatPanel", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Migrate old stat panel to supported stat panel - broken out from autoMigrateOldPanels to enable granular tracking", - "stage": "preview", - "codeowner": "@grafana/dataviz-squad", - "frontend": true - } - }, - { - "metadata": { - "name": "newVizTooltips", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "New visualizations tooltips UX", - "stage": "preview", - "codeowner": "@grafana/dataviz-squad", - "frontend": true - } - }, - { - "metadata": { - "name": "editPanelCSVDragAndDrop", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Enables drag and drop for CSV and Excel files", - "stage": "experimental", - "codeowner": "@grafana/dataviz-squad", - "frontend": true - } - }, - { - "metadata": { - "name": "awsAsyncQueryCaching", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Enable caching for async queries for Redshift and Athena. Requires that the datasource has caching and async query support enabled", - "stage": "GA", - "codeowner": "@grafana/aws-datasources" - } - }, - { - "metadata": { - "name": "canvasPanelPanZoom", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Allow pan and zoom in canvas panel", - "stage": "preview", - "codeowner": "@grafana/dataviz-squad", - "frontend": true - } - }, - { - "metadata": { - "name": "migrationLocking", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z", - "deletionTimestamp": "2024-03-22T10:42:09Z" - }, - "spec": { - "description": "Lock database during migrations", - "stage": "preview", - "codeowner": "@grafana/backend-platform" - } - }, - { - "metadata": { - "name": "exploreScrollableLogsContainer", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z", - "deletionTimestamp": "2024-03-12T14:02:07Z" - }, - "spec": { - "description": "Improves the scrolling behavior of logs in Explore", - "stage": "experimental", - "codeowner": "@grafana/observability-logs", - "frontend": true - } - }, - { - "metadata": { - "name": "libraryPanelRBAC", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Enables RBAC support for library panels", - "stage": "experimental", - "codeowner": "@grafana/dashboards-squad", - "requiresRestart": true - } - }, - { - "metadata": { - "name": "newFolderPicker", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Enables the nested folder picker without having nested folders enabled", - "stage": "experimental", - "codeowner": "@grafana/grafana-frontend-platform", - "frontend": true - } - }, { "metadata": { "name": "publicDashboardsEmailSharing", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" }, "spec": { "description": "Enables public dashboard sharing to be restricted to only allowed emails", @@ -1493,21 +19,99 @@ }, { "metadata": { - "name": "lokiExperimentalStreaming", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" + "name": "autoMigrateTablePanel", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" }, "spec": { - "description": "Support new streaming approach for loki (prototype, needs special loki build)", + "description": "Migrate old table panel to supported table panel - broken out from autoMigrateOldPanels to enable granular tracking", + "stage": "preview", + "codeowner": "@grafana/dataviz-squad", + "frontend": true + } + }, + { + "metadata": { + "name": "scenes", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Experimental framework to build interactive dashboards", "stage": "experimental", - "codeowner": "@grafana/observability-logs" + "codeowner": "@grafana/dashboards-squad", + "frontend": true + } + }, + { + "metadata": { + "name": "nestedFolders", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Enable folder nesting", + "stage": "GA", + "codeowner": "@grafana/backend-platform" + } + }, + { + "metadata": { + "name": "cloudRBACRoles", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Enabled grafana cloud specific RBAC roles", + "stage": "experimental", + "codeowner": "@grafana/identity-access-team", + "requiresRestart": true, + "hideFromDocs": true + } + }, + { + "metadata": { + "name": "disableSSEDataplane", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Disables dataplane specific processing in server side expressions.", + "stage": "experimental", + "codeowner": "@grafana/observability-metrics" + } + }, + { + "metadata": { + "name": "faroDatasourceSelector", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Enable the data source selector within the Frontend Apps section of the Frontend Observability", + "stage": "preview", + "codeowner": "@grafana/app-o11y", + "frontend": true + } + }, + { + "metadata": { + "name": "aiGeneratedDashboardChanges", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Enable AI powered features for dashboards to auto-summary changes when saving", + "stage": "experimental", + "codeowner": "@grafana/dashboards-squad", + "frontend": true } }, { "metadata": { "name": "alertingInsights", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" }, "spec": { "description": "Show the new alerting insights landing page", @@ -1517,25 +121,11 @@ "hideFromAdminPage": true } }, - { - "metadata": { - "name": "cloudWatchWildCardDimensionValues", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z", - "deletionTimestamp": "2024-03-12T20:13:32Z" - }, - "spec": { - "description": "Fetches dimension values from CloudWatch to correctly label wildcard dimensions", - "stage": "GA", - "codeowner": "@grafana/aws-datasources", - "allowSelfServe": true - } - }, { "metadata": { "name": "dashboardScene", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" }, "spec": { "description": "Enables dashboard rendering using scenes for all roles", @@ -1546,24 +136,60 @@ }, { "metadata": { - "name": "alertingSimplifiedRouting", - "resourceVersion": "1710956489717", - "creationTimestamp": "2024-03-05T14:17:16Z", - "annotations": { - "grafana.app/updatedTimestamp": "2024-03-20 17:41:29.717557527 +0000 UTC" - } + "name": "teamHttpHeaders", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" }, "spec": { - "description": "Enables users to easily configure alert notifications by specifying a contact point directly when editing or creating an alert rule", + "description": "Enables Team LBAC for datasources to apply team headers to the client requests", + "stage": "preview", + "codeowner": "@grafana/identity-access-team" + } + }, + { + "metadata": { + "name": "logRowsPopoverMenu", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Enable filtering menu displayed when text of a log line is selected", "stage": "GA", - "codeowner": "@grafana/alerting-squad" + "codeowner": "@grafana/observability-logs", + "frontend": true + } + }, + { + "metadata": { + "name": "queryOverLive", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Use Grafana Live WebSocket to execute backend queries", + "stage": "experimental", + "codeowner": "@grafana/grafana-app-platform-squad", + "frontend": true + } + }, + { + "metadata": { + "name": "panelTitleSearch", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Search for dashboards using panel title", + "stage": "preview", + "codeowner": "@grafana/grafana-app-platform-squad", + "hideFromAdminPage": true } }, { "metadata": { "name": "returnToPrevious", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" }, "spec": { "description": "Enables the return to previous context functionality", @@ -1574,78 +200,735 @@ }, { "metadata": { - "name": "cloudWatchLogsMonacoEditor", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z", - "deletionTimestamp": "2024-03-13T18:21:47Z" + "name": "cloudWatchCrossAccountQuerying", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" }, "spec": { - "description": "Enables the Monaco editor for CloudWatch Logs queries", + "description": "Enables cross-account querying in CloudWatch datasources", "stage": "GA", "codeowner": "@grafana/aws-datasources", + "allowSelfServe": true + } + }, + { + "metadata": { + "name": "individualCookiePreferences", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Support overriding cookie preferences per user", + "stage": "experimental", + "codeowner": "@grafana/backend-platform" + } + }, + { + "metadata": { + "name": "panelMonitoring", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Enables panel monitoring through logs and measurements", + "stage": "GA", + "codeowner": "@grafana/dataviz-squad", + "frontend": true + } + }, + { + "metadata": { + "name": "pluginsSkipHostEnvVars", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Disables passing host environment variable to plugin processes", + "stage": "experimental", + "codeowner": "@grafana/plugins-platform-backend" + } + }, + { + "metadata": { + "name": "groupToNestedTableTransformation", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Enables the group to nested table transformation", + "stage": "preview", + "codeowner": "@grafana/dataviz-squad", + "frontend": true + } + }, + { + "metadata": { + "name": "migrationLocking", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Lock database during migrations", + "stage": "preview", + "codeowner": "@grafana/backend-platform" + } + }, + { + "metadata": { + "name": "correlations", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Correlations page", + "stage": "GA", + "codeowner": "@grafana/explore-squad", + "allowSelfServe": true + } + }, + { + "metadata": { + "name": "nodeGraphDotLayout", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Changed the layout algorithm for the node graph", + "stage": "experimental", + "codeowner": "@grafana/observability-traces-and-profiling", + "frontend": true + } + }, + { + "metadata": { + "name": "groupByVariable", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Enable groupBy variable support in scenes dashboards", + "stage": "experimental", + "codeowner": "@grafana/dashboards-squad", + "hideFromAdminPage": true, + "hideFromDocs": true + } + }, + { + "metadata": { + "name": "publicDashboards", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "[Deprecated] Public dashboards are now enabled by default; to disable them, use the configuration setting. This feature toggle will be removed in the next major version.", + "stage": "GA", + "codeowner": "@grafana/sharing-squad", + "allowSelfServe": true + } + }, + { + "metadata": { + "name": "autoMigratePiechartPanel", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Migrate old piechart panel to supported piechart panel - broken out from autoMigrateOldPanels to enable granular tracking", + "stage": "preview", + "codeowner": "@grafana/dataviz-squad", + "frontend": true + } + }, + { + "metadata": { + "name": "autoMigrateXYChartPanel", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Migrate old XYChart panel to new XYChart2 model", + "stage": "preview", + "codeowner": "@grafana/dataviz-squad", + "frontend": true + } + }, + { + "metadata": { + "name": "editPanelCSVDragAndDrop", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Enables drag and drop for CSV and Excel files", + "stage": "experimental", + "codeowner": "@grafana/dataviz-squad", + "frontend": true + } + }, + { + "metadata": { + "name": "prometheusMetricEncyclopedia", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Adds the metrics explorer component to the Prometheus query builder as an option in metric select", + "stage": "GA", + "codeowner": "@grafana/observability-metrics", "frontend": true, "allowSelfServe": true } }, { "metadata": { - "name": "cloudWatchBatchQueries", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" + "name": "influxdbBackendMigration", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" }, "spec": { - "description": "Runs CloudWatch metrics queries as separate batches", - "stage": "preview", - "codeowner": "@grafana/aws-datasources" + "description": "Query InfluxDB InfluxQL without the proxy", + "stage": "GA", + "codeowner": "@grafana/observability-metrics", + "frontend": true } }, { "metadata": { - "name": "lokiQueryHints", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" + "name": "disableSecretsCompatibility", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" }, "spec": { - "description": "Enables query hints for Loki", + "description": "Disable duplicated secret storage in legacy tables", + "stage": "experimental", + "codeowner": "@grafana/hosted-grafana-team", + "requiresRestart": true + } + }, + { + "metadata": { + "name": "annotationPermissionUpdate", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Change the way annotation permissions work by scoping them to folders and dashboards.", "stage": "GA", + "codeowner": "@grafana/identity-access-team" + } + }, + { + "metadata": { + "name": "scopeFilters", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Enables the use of scope filters in Grafana", + "stage": "experimental", + "codeowner": "@grafana/dashboards-squad", + "hideFromAdminPage": true, + "hideFromDocs": true + } + }, + { + "metadata": { + "name": "lokiExperimentalStreaming", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Support new streaming approach for loki (prototype, needs special loki build)", + "stage": "experimental", + "codeowner": "@grafana/observability-logs" + } + }, + { + "metadata": { + "name": "logRequestsInstrumentedAsUnknown", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Logs the path for requests that are instrumented as unknown", + "stage": "experimental", + "codeowner": "@grafana/hosted-grafana-team" + } + }, + { + "metadata": { + "name": "frontendSandboxMonitorOnly", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Enables monitor only in the plugin frontend sandbox (if enabled)", + "stage": "experimental", + "codeowner": "@grafana/plugins-platform-backend", + "frontend": true + } + }, + { + "metadata": { + "name": "lokiFormatQuery", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Enables the ability to format Loki queries", + "stage": "experimental", "codeowner": "@grafana/observability-logs", "frontend": true } }, { "metadata": { - "name": "newPDFRendering", - "resourceVersion": "1711016567239", - "creationTimestamp": "2024-03-05T14:17:16Z", - "annotations": { - "grafana.app/updatedTimestamp": "2024-03-21 10:22:47.2392058 +0000 UTC" - } + "name": "externalServiceAccounts", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" }, "spec": { - "description": "New implementation for the dashboard-to-PDF rendering", + "description": "Automatic service account and token setup for plugins", "stage": "preview", - "codeowner": "@grafana/sharing-squad" + "codeowner": "@grafana/identity-access-team", + "hideFromAdminPage": true } }, { "metadata": { - "name": "logsContextDatasourceUi", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" + "name": "alertStateHistoryLokiOnly", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" }, "spec": { - "description": "Allow datasource to provide custom UI for context view", + "description": "Disable Grafana alerts from emitting annotations when a remote Loki instance is available.", + "stage": "experimental", + "codeowner": "@grafana/alerting-squad" + } + }, + { + "metadata": { + "name": "transformationsVariableSupport", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Allows using variables in transformations", + "stage": "preview", + "codeowner": "@grafana/dataviz-squad", + "frontend": true + } + }, + { + "metadata": { + "name": "lokiStructuredMetadata", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Enables the loki data source to request structured metadata from the Loki server", "stage": "GA", - "codeowner": "@grafana/observability-logs", + "codeowner": "@grafana/observability-logs" + } + }, + { + "metadata": { + "name": "alertingSaveStatePeriodic", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Writes the state periodically to the database, asynchronous to rule evaluation", + "stage": "privatePreview", + "codeowner": "@grafana/alerting-squad" + } + }, + { + "metadata": { + "name": "sqlExpressions", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Enables using SQL and DuckDB functions as Expressions.", + "stage": "experimental", + "codeowner": "@grafana/grafana-app-platform-squad" + } + }, + { + "metadata": { + "name": "transformationsRedesign", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Enables the transformations redesign", + "stage": "GA", + "codeowner": "@grafana/observability-metrics", "frontend": true, "allowSelfServe": true } }, + { + "metadata": { + "name": "dashgpt", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Enable AI powered features in dashboards", + "stage": "GA", + "codeowner": "@grafana/dashboards-squad", + "frontend": true + } + }, + { + "metadata": { + "name": "kubernetesSnapshots", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Routes snapshot requests from /api to the /apis endpoint", + "stage": "experimental", + "codeowner": "@grafana/grafana-app-platform-squad", + "requiresRestart": true + } + }, + { + "metadata": { + "name": "dashboardSceneForViewers", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Enables dashboard rendering using Scenes for viewer roles", + "stage": "experimental", + "codeowner": "@grafana/dashboards-squad", + "frontend": true + } + }, + { + "metadata": { + "name": "datatrails", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Enables the new core app datatrails", + "stage": "experimental", + "codeowner": "@grafana/dashboards-squad", + "frontend": true, + "hideFromDocs": true + } + }, + { + "metadata": { + "name": "jitterAlertRulesWithinGroups", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Distributes alert rule evaluations more evenly over time, including spreading out rules within the same group", + "stage": "preview", + "codeowner": "@grafana/alerting-squad", + "requiresRestart": true, + "hideFromDocs": true + } + }, + { + "metadata": { + "name": "accessControlOnCall", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Access control primitives for OnCall", + "stage": "preview", + "codeowner": "@grafana/identity-access-team", + "hideFromAdminPage": true + } + }, + { + "metadata": { + "name": "lokiMetricDataplane", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Changes metric responses from Loki to be compliant with the dataplane specification.", + "stage": "GA", + "codeowner": "@grafana/observability-logs", + "allowSelfServe": true + } + }, + { + "metadata": { + "name": "enableNativeHTTPHistogram", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Enables native HTTP Histograms", + "stage": "experimental", + "codeowner": "@grafana/hosted-grafana-team" + } + }, + { + "metadata": { + "name": "showDashboardValidationWarnings", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Show warnings when dashboards do not validate against the schema", + "stage": "experimental", + "codeowner": "@grafana/dashboards-squad" + } + }, + { + "metadata": { + "name": "unifiedRequestLog", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Writes error logs to the request logger", + "stage": "experimental", + "codeowner": "@grafana/backend-platform" + } + }, + { + "metadata": { + "name": "prometheusPromQAIL", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Prometheus and AI/ML to assist users in creating a query", + "stage": "experimental", + "codeowner": "@grafana/observability-metrics", + "frontend": true + } + }, + { + "metadata": { + "name": "alertingSimplifiedRouting", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Enables users to easily configure alert notifications by specifying a contact point directly when editing or creating an alert rule", + "stage": "GA", + "codeowner": "@grafana/alerting-squad" + } + }, + { + "metadata": { + "name": "newVizTooltips", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "New visualizations tooltips UX", + "stage": "preview", + "codeowner": "@grafana/dataviz-squad", + "frontend": true + } + }, + { + "metadata": { + "name": "influxdbRunQueriesInParallel", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Enables running InfluxDB Influxql queries in parallel", + "stage": "privatePreview", + "codeowner": "@grafana/observability-metrics" + } + }, + { + "metadata": { + "name": "disableAngular", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Dynamic flag to disable angular at runtime. The preferred method is to set `angular_support_enabled` to `false` in the [security] settings, which allows you to change the state at runtime.", + "stage": "preview", + "codeowner": "@grafana/dataviz-squad", + "frontend": true, + "hideFromAdminPage": true + } + }, + { + "metadata": { + "name": "influxqlStreamingParser", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Enable streaming JSON parser for InfluxDB datasource InfluxQL query language", + "stage": "experimental", + "codeowner": "@grafana/observability-metrics" + } + }, + { + "metadata": { + "name": "alertStateHistoryLokiSecondary", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Enable Grafana to write alert state history to an external Loki instance in addition to Grafana annotations.", + "stage": "experimental", + "codeowner": "@grafana/alerting-squad" + } + }, + { + "metadata": { + "name": "metricsSummary", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Enables metrics summary queries in the Tempo data source", + "stage": "experimental", + "codeowner": "@grafana/observability-traces-and-profiling", + "frontend": true + } + }, + { + "metadata": { + "name": "alertingQueryOptimization", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Optimizes eligible queries in order to reduce load on datasources", + "stage": "GA", + "codeowner": "@grafana/alerting-squad" + } + }, + { + "metadata": { + "name": "promQLScope", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "In-development feature that will allow injection of labels into prometheus queries.", + "stage": "experimental", + "codeowner": "@grafana/observability-metrics" + } + }, + { + "metadata": { + "name": "lokiLogsDataplane", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Changes logs responses from Loki to be compliant with the dataplane specification.", + "stage": "experimental", + "codeowner": "@grafana/observability-logs" + } + }, + { + "metadata": { + "name": "pluginsFrontendSandbox", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Enables the plugins frontend sandbox", + "stage": "experimental", + "codeowner": "@grafana/plugins-platform-backend", + "frontend": true + } + }, + { + "metadata": { + "name": "prometheusIncrementalQueryInstrumentation", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Adds RudderStack events to incremental queries", + "stage": "experimental", + "codeowner": "@grafana/observability-metrics", + "frontend": true + } + }, + { + "metadata": { + "name": "panelTitleSearchInV1", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Enable searching for dashboards using panel title in search v1", + "stage": "experimental", + "codeowner": "@grafana/backend-platform", + "requiresDevMode": true + } + }, + { + "metadata": { + "name": "pluginsDynamicAngularDetectionPatterns", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Enables fetching Angular detection patterns for plugins from GCOM and fallback to hardcoded ones", + "stage": "GA", + "codeowner": "@grafana/plugins-platform-backend" + } + }, + { + "metadata": { + "name": "pluginsAPIMetrics", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Sends metrics of public grafana packages usage by plugins", + "stage": "experimental", + "codeowner": "@grafana/plugins-platform-backend", + "frontend": true + } + }, + { + "metadata": { + "name": "awsAsyncQueryCaching", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Enable caching for async queries for Redshift and Athena. Requires that the datasource has caching and async query support enabled", + "stage": "GA", + "codeowner": "@grafana/aws-datasources" + } + }, + { + "metadata": { + "name": "autoMigrateStatPanel", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Migrate old stat panel to supported stat panel - broken out from autoMigrateOldPanels to enable granular tracking", + "stage": "preview", + "codeowner": "@grafana/dataviz-squad", + "frontend": true + } + }, { "metadata": { "name": "dataplaneFrontendFallback", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" }, "spec": { "description": "Support dataplane contract field name change for transformations and field name matchers where the name is different", @@ -1655,11 +938,672 @@ "allowSelfServe": true } }, + { + "metadata": { + "name": "enableDatagridEditing", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Enables the edit functionality in the datagrid panel", + "stage": "preview", + "codeowner": "@grafana/dataviz-squad", + "frontend": true + } + }, + { + "metadata": { + "name": "vizAndWidgetSplit", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Split panels between visualizations and widgets", + "stage": "experimental", + "codeowner": "@grafana/dashboards-squad", + "frontend": true + } + }, + { + "metadata": { + "name": "logsExploreTableVisualisation", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "A table visualisation for logs in Explore", + "stage": "GA", + "codeowner": "@grafana/observability-logs", + "frontend": true + } + }, + { + "metadata": { + "name": "traceQLStreaming", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Enables response streaming of TraceQL queries of the Tempo data source", + "stage": "GA", + "codeowner": "@grafana/observability-traces-and-profiling", + "frontend": true + } + }, + { + "metadata": { + "name": "ssoSettingsSAML", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Use the new SSO Settings API to configure the SAML connector", + "stage": "experimental", + "codeowner": "@grafana/identity-access-team", + "hideFromAdminPage": true, + "hideFromDocs": true + } + }, + { + "metadata": { + "name": "nestedFolderPicker", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Enables the new folder picker to work with nested folders. Requires the nestedFolders feature toggle", + "stage": "GA", + "codeowner": "@grafana/grafana-frontend-platform", + "frontend": true, + "allowSelfServe": true + } + }, + { + "metadata": { + "name": "alertingNoNormalState", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Stop maintaining state of alerts that are not firing", + "stage": "preview", + "codeowner": "@grafana/alerting-squad", + "hideFromAdminPage": true + } + }, + { + "metadata": { + "name": "alertStateHistoryLokiPrimary", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Enable a remote Loki instance as the primary source for state history reads.", + "stage": "experimental", + "codeowner": "@grafana/alerting-squad" + } + }, + { + "metadata": { + "name": "awsDatasourcesTempCredentials", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Support temporary security credentials in AWS plugins for Grafana Cloud customers", + "stage": "experimental", + "codeowner": "@grafana/aws-datasources" + } + }, + { + "metadata": { + "name": "permissionsFilterRemoveSubquery", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Alternative permission filter implementation that does not use subqueries for fetching the dashboard folder", + "stage": "experimental", + "codeowner": "@grafana/backend-platform" + } + }, + { + "metadata": { + "name": "ssoSettingsApi", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Enables the SSO settings API and the OAuth configuration UIs in Grafana", + "stage": "preview", + "codeowner": "@grafana/identity-access-team", + "allowSelfServe": true + } + }, + { + "metadata": { + "name": "renderAuthJWT", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Uses JWT-based auth for rendering instead of relying on remote cache", + "stage": "preview", + "codeowner": "@grafana/grafana-as-code", + "hideFromAdminPage": true + } + }, + { + "metadata": { + "name": "enableElasticsearchBackendQuerying", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Enable the processing of queries and responses in the Elasticsearch data source through backend", + "stage": "GA", + "codeowner": "@grafana/observability-logs", + "allowSelfServe": true + } + }, + { + "metadata": { + "name": "sqlDatasourceDatabaseSelection", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Enables previous SQL data source dataset dropdown behavior", + "stage": "preview", + "codeowner": "@grafana/dataviz-squad", + "frontend": true, + "hideFromAdminPage": true + } + }, + { + "metadata": { + "name": "lokiRunQueriesInParallel", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Enables running Loki queries in parallel", + "stage": "privatePreview", + "codeowner": "@grafana/observability-logs" + } + }, + { + "metadata": { + "name": "tableSharedCrosshair", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Enables shared crosshair in table panel", + "stage": "experimental", + "codeowner": "@grafana/dataviz-squad", + "frontend": true + } + }, + { + "metadata": { + "name": "expressionParser", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Enable new expression parser", + "stage": "experimental", + "codeowner": "@grafana/grafana-app-platform-squad", + "requiresRestart": true + } + }, + { + "metadata": { + "name": "storage", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Configurable storage for dashboards, datasources, and resources", + "stage": "experimental", + "codeowner": "@grafana/grafana-app-platform-squad" + } + }, + { + "metadata": { + "name": "logsContextDatasourceUi", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Allow datasource to provide custom UI for context view", + "stage": "GA", + "codeowner": "@grafana/observability-logs", + "frontend": true, + "allowSelfServe": true + } + }, + { + "metadata": { + "name": "prometheusConfigOverhaulAuth", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Update the Prometheus configuration page with the new auth component", + "stage": "GA", + "codeowner": "@grafana/observability-metrics" + } + }, + { + "metadata": { + "name": "betterPageScrolling", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Removes CustomScrollbar from the UI, relying on native browser scrollbars", + "stage": "GA", + "codeowner": "@grafana/grafana-frontend-platform", + "frontend": true + } + }, + { + "metadata": { + "name": "alertmanagerRemoteSecondary", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Enable Grafana to sync configuration and state with a remote Alertmanager.", + "stage": "experimental", + "codeowner": "@grafana/alerting-squad" + } + }, + { + "metadata": { + "name": "panelFilterVariable", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Enables use of the `systemPanelFilterVar` variable to filter panels in a dashboard", + "stage": "experimental", + "codeowner": "@grafana/dashboards-squad", + "frontend": true, + "hideFromDocs": true + } + }, + { + "metadata": { + "name": "datasourceQueryMultiStatus", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Introduce HTTP 207 Multi Status for api/ds/query", + "stage": "experimental", + "codeowner": "@grafana/plugins-platform-backend" + } + }, + { + "metadata": { + "name": "autoMigrateWorldmapPanel", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Migrate old worldmap panel to supported geomap panel - broken out from autoMigrateOldPanels to enable granular tracking", + "stage": "preview", + "codeowner": "@grafana/dataviz-squad", + "frontend": true + } + }, + { + "metadata": { + "name": "canvasPanelNesting", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Allow elements nesting", + "stage": "experimental", + "codeowner": "@grafana/dataviz-squad", + "frontend": true, + "hideFromAdminPage": true + } + }, + { + "metadata": { + "name": "featureToggleAdminPage", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Enable admin page for managing feature toggles from the Grafana front-end", + "stage": "experimental", + "codeowner": "@grafana/grafana-operator-experience-squad", + "requiresRestart": true + } + }, + { + "metadata": { + "name": "externalCorePlugins", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Allow core plugins to be loaded as external", + "stage": "experimental", + "codeowner": "@grafana/plugins-platform-backend" + } + }, + { + "metadata": { + "name": "idForwarding", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Generate signed id token for identity that can be forwarded to plugins and external services", + "stage": "experimental", + "codeowner": "@grafana/identity-access-team" + } + }, + { + "metadata": { + "name": "logsInfiniteScrolling", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Enables infinite scrolling for the Logs panel in Explore and Dashboards", + "stage": "experimental", + "codeowner": "@grafana/observability-logs", + "frontend": true + } + }, + { + "metadata": { + "name": "mlExpressions", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Enable support for Machine Learning in server-side expressions", + "stage": "experimental", + "codeowner": "@grafana/alerting-squad" + } + }, + { + "metadata": { + "name": "libraryPanelRBAC", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Enables RBAC support for library panels", + "stage": "experimental", + "codeowner": "@grafana/dashboards-squad", + "requiresRestart": true + } + }, + { + "metadata": { + "name": "kubernetesQueryServiceRewrite", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Rewrite requests targeting /ds/query to the query service", + "stage": "experimental", + "codeowner": "@grafana/grafana-app-platform-squad", + "requiresDevMode": true, + "requiresRestart": true + } + }, + { + "metadata": { + "name": "managedPluginsInstall", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Install managed plugins directly from plugins catalog", + "stage": "GA", + "codeowner": "@grafana/plugins-platform-backend" + } + }, + { + "metadata": { + "name": "kubernetesFeatureToggles", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Use the kubernetes API for feature toggle management in the frontend", + "stage": "experimental", + "codeowner": "@grafana/grafana-operator-experience-squad", + "frontend": true, + "hideFromAdminPage": true + } + }, + { + "metadata": { + "name": "featureHighlights", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Highlight Grafana Enterprise features", + "stage": "GA", + "codeowner": "@grafana/grafana-as-code", + "allowSelfServe": true + } + }, + { + "metadata": { + "name": "exploreContentOutline", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Content outline sidebar", + "stage": "GA", + "codeowner": "@grafana/explore-squad", + "frontend": true, + "allowSelfServe": true + } + }, + { + "metadata": { + "name": "influxdbSqlSupport", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Enable InfluxDB SQL query language support with new querying UI", + "stage": "GA", + "codeowner": "@grafana/observability-metrics", + "requiresRestart": true, + "allowSelfServe": true + } + }, + { + "metadata": { + "name": "alertingNoDataErrorExecution", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Changes how Alerting state manager handles execution of NoData/Error", + "stage": "GA", + "codeowner": "@grafana/alerting-squad", + "requiresRestart": true + } + }, + { + "metadata": { + "name": "autoMigrateOldPanels", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Migrate old angular panels to supported versions (graph, table-old, worldmap, etc)", + "stage": "preview", + "codeowner": "@grafana/dataviz-squad", + "frontend": true + } + }, + { + "metadata": { + "name": "grpcServer", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Run the GRPC server", + "stage": "preview", + "codeowner": "@grafana/grafana-app-platform-squad", + "hideFromAdminPage": true + } + }, + { + "metadata": { + "name": "sseGroupByDatasource", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Send query to the same datasource in a single request when using server side expressions. The `cloudWatchBatchQueries` feature toggle should be enabled if this used with CloudWatch.", + "stage": "experimental", + "codeowner": "@grafana/observability-metrics" + } + }, + { + "metadata": { + "name": "extractFieldsNameDeduplication", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Make sure extracted field names are unique in the dataframe", + "stage": "experimental", + "codeowner": "@grafana/dataviz-squad", + "frontend": true + } + }, + { + "metadata": { + "name": "newFolderPicker", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Enables the nested folder picker without having nested folders enabled", + "stage": "experimental", + "codeowner": "@grafana/grafana-frontend-platform", + "frontend": true + } + }, + { + "metadata": { + "name": "refactorVariablesTimeRange", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Refactor time range variables flow to reduce number of API calls made when query variables are chained", + "stage": "preview", + "codeowner": "@grafana/dashboards-squad", + "hideFromAdminPage": true + } + }, + { + "metadata": { + "name": "lokiPredefinedOperations", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Adds predefined query operations to Loki query editor", + "stage": "experimental", + "codeowner": "@grafana/observability-logs", + "frontend": true + } + }, + { + "metadata": { + "name": "grafanaAPIServerWithExperimentalAPIs", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Register experimental APIs with the k8s API server", + "stage": "experimental", + "codeowner": "@grafana/grafana-app-platform-squad", + "requiresDevMode": true, + "requiresRestart": true + } + }, + { + "metadata": { + "name": "onPremToCloudMigrations", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "In-development feature that will allow users to easily migrate their on-prem Grafana instances to Grafana Cloud.", + "stage": "experimental", + "codeowner": "@grafana/grafana-operator-experience-squad" + } + }, + { + "metadata": { + "name": "dashboardSceneSolo", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Enables rendering dashboards using scenes for solo panels", + "stage": "experimental", + "codeowner": "@grafana/dashboards-squad", + "frontend": true + } + }, + { + "metadata": { + "name": "canvasPanelPanZoom", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Allow pan and zoom in canvas panel", + "stage": "preview", + "codeowner": "@grafana/dataviz-squad", + "frontend": true + } + }, + { + "metadata": { + "name": "lokiQuerySplitting", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Split large interval queries into subqueries with smaller time intervals", + "stage": "GA", + "codeowner": "@grafana/observability-logs", + "frontend": true, + "allowSelfServe": true + } + }, { "metadata": { "name": "grafanaAPIServerEnsureKubectlAccess", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" }, "spec": { "description": "Start an additional https handler and write kubectl options", @@ -1672,8 +1616,8 @@ { "metadata": { "name": "configurableSchedulerTick", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" }, "spec": { "description": "Enable changing the scheduler base interval via configuration option unified_alerting.scheduler_tick_interval", @@ -1685,180 +1629,21 @@ }, { "metadata": { - "name": "enableNativeHTTPHistogram", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" + "name": "wargamesTesting", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" }, "spec": { - "description": "Enables native HTTP Histograms", + "description": "Placeholder feature flag for internal testing", "stage": "experimental", "codeowner": "@grafana/hosted-grafana-team" } }, - { - "metadata": { - "name": "formatString", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Enable format string transformer", - "stage": "preview", - "codeowner": "@grafana/dataviz-squad", - "frontend": true - } - }, - { - "metadata": { - "name": "flameGraphItemCollapsing", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Allow collapsing of flame graph items", - "stage": "experimental", - "codeowner": "@grafana/observability-traces-and-profiling", - "frontend": true - } - }, - { - "metadata": { - "name": "publicDashboards", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "[Deprecated] Public dashboards are now enabled by default; to disable them, use the configuration setting. This feature toggle will be removed in the next major version.", - "stage": "GA", - "codeowner": "@grafana/sharing-squad", - "allowSelfServe": true - } - }, - { - "metadata": { - "name": "exploreContentOutline", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Content outline sidebar", - "stage": "GA", - "codeowner": "@grafana/explore-squad", - "frontend": true, - "allowSelfServe": true - } - }, - { - "metadata": { - "name": "groupByVariable", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Enable groupBy variable support in scenes dashboards", - "stage": "experimental", - "codeowner": "@grafana/dashboards-squad", - "hideFromAdminPage": true, - "hideFromDocs": true - } - }, - { - "metadata": { - "name": "extraThemes", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Enables extra themes", - "stage": "experimental", - "codeowner": "@grafana/grafana-frontend-platform", - "frontend": true - } - }, - { - "metadata": { - "name": "dashboardSceneForViewers", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Enables dashboard rendering using Scenes for viewer roles", - "stage": "experimental", - "codeowner": "@grafana/dashboards-squad", - "frontend": true - } - }, - { - "metadata": { - "name": "onPremToCloudMigrations", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "In-development feature that will allow users to easily migrate their on-prem Grafana instances to Grafana Cloud.", - "stage": "experimental", - "codeowner": "@grafana/grafana-operator-experience-squad" - } - }, - { - "metadata": { - "name": "lokiQuerySplittingConfig", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Give users the option to configure split durations for Loki queries", - "stage": "experimental", - "codeowner": "@grafana/observability-logs", - "frontend": true - } - }, - { - "metadata": { - "name": "lokiFormatQuery", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Enables the ability to format Loki queries", - "stage": "experimental", - "codeowner": "@grafana/observability-logs", - "frontend": true - } - }, - { - "metadata": { - "name": "grafanaAPIServerWithExperimentalAPIs", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Register experimental APIs with the k8s API server", - "stage": "experimental", - "codeowner": "@grafana/grafana-app-platform-squad", - "requiresDevMode": true, - "requiresRestart": true - } - }, - { - "metadata": { - "name": "influxdbSqlSupport", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Enable InfluxDB SQL query language support with new querying UI", - "stage": "GA", - "codeowner": "@grafana/observability-metrics", - "requiresRestart": true, - "allowSelfServe": true - } - }, { "metadata": { "name": "recoveryThreshold", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" }, "spec": { "description": "Enables feature recovery threshold (aka hysteresis) for threshold server-side expression", @@ -1869,126 +1654,301 @@ }, { "metadata": { - "name": "panelFilterVariable", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" + "name": "alertmanagerRemoteOnly", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" }, "spec": { - "description": "Enables use of the `systemPanelFilterVar` variable to filter panels in a dashboard", + "description": "Disable the internal Alertmanager and only use the external one defined.", "stage": "experimental", - "codeowner": "@grafana/dashboards-squad", - "frontend": true, - "hideFromDocs": true + "codeowner": "@grafana/alerting-squad" } }, { "metadata": { - "name": "lokiQuerySplitting", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" + "name": "recordedQueriesMulti", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" }, "spec": { - "description": "Split large interval queries into subqueries with smaller time intervals", + "description": "Enables writing multiple items from a single query within Recorded Queries", "stage": "GA", - "codeowner": "@grafana/observability-logs", - "frontend": true, - "allowSelfServe": true + "codeowner": "@grafana/observability-metrics" } }, { "metadata": { - "name": "lokiMetricDataplane", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" + "name": "formatString", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" }, "spec": { - "description": "Changes metric responses from Loki to be compliant with the dataplane specification.", - "stage": "GA", - "codeowner": "@grafana/observability-logs", - "allowSelfServe": true - } - }, - { - "metadata": { - "name": "idForwarding", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Generate signed id token for identity that can be forwarded to plugins and external services", - "stage": "experimental", - "codeowner": "@grafana/identity-access-team" - } - }, - { - "metadata": { - "name": "teamHttpHeaders", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Enables Team LBAC for datasources to apply team headers to the client requests", + "description": "Enable format string transformer", "stage": "preview", - "codeowner": "@grafana/identity-access-team" + "codeowner": "@grafana/dataviz-squad", + "frontend": true } }, { "metadata": { - "name": "managedPluginsInstall", - "resourceVersion": "1710846414600", - "creationTimestamp": "2024-03-05T14:17:16Z", - "annotations": { - "grafana.app/updatedTimestamp": "2024-03-19 11:06:54.600063936 +0000 UTC" - } + "name": "pdfTables", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" }, "spec": { - "description": "Install managed plugins directly from plugins catalog", - "stage": "GA", - "codeowner": "@grafana/plugins-platform-backend" + "description": "Enables generating table data as PDF in reporting", + "stage": "preview", + "codeowner": "@grafana/sharing-squad" } }, { "metadata": { - "name": "alertmanagerRemotePrimary", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" + "name": "kubernetesAggregator", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" }, "spec": { - "description": "Enable Grafana to have a remote Alertmanager instance as the primary Alertmanager.", + "description": "Enable grafana aggregator", "stage": "experimental", - "codeowner": "@grafana/alerting-squad" + "codeowner": "@grafana/grafana-app-platform-squad", + "requiresRestart": true } }, { "metadata": { - "name": "alertingQueryOptimization", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" + "name": "prometheusDataplane", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" }, "spec": { - "description": "Optimizes eligible queries in order to reduce load on datasources", + "description": "Changes responses to from Prometheus to be compliant with the dataplane specification. In particular, when this feature toggle is active, the numeric `Field.Name` is set from 'Value' to the value of the `__name__` label.", "stage": "GA", - "codeowner": "@grafana/alerting-squad" - } - }, - { - "metadata": { - "name": "correlations", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Correlations page", - "stage": "GA", - "codeowner": "@grafana/explore-squad", + "codeowner": "@grafana/observability-metrics", "allowSelfServe": true } }, + { + "metadata": { + "name": "extraThemes", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Enables extra themes", + "stage": "experimental", + "codeowner": "@grafana/grafana-frontend-platform", + "frontend": true + } + }, + { + "metadata": { + "name": "reportingRetries", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Enables rendering retries for the reporting feature", + "stage": "preview", + "codeowner": "@grafana/sharing-squad", + "requiresRestart": true + } + }, + { + "metadata": { + "name": "cloudWatchBatchQueries", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Runs CloudWatch metrics queries as separate batches", + "stage": "preview", + "codeowner": "@grafana/aws-datasources" + } + }, + { + "metadata": { + "name": "cachingOptimizeSerializationMemoryUsage", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "If enabled, the caching backend gradually serializes query responses for the cache, comparing against the configured `[caching]max_value_mb` value as it goes. This can can help prevent Grafana from running out of memory while attempting to cache very large query responses.", + "stage": "experimental", + "codeowner": "@grafana/grafana-operator-experience-squad" + } + }, + { + "metadata": { + "name": "addFieldFromCalculationStatFunctions", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Add cumulative and window functions to the add field from calculation transformation", + "stage": "preview", + "codeowner": "@grafana/dataviz-squad", + "frontend": true + } + }, + { + "metadata": { + "name": "usePrometheusFrontendPackage", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Use the @grafana/prometheus frontend package in core Prometheus.", + "stage": "experimental", + "codeowner": "@grafana/observability-metrics", + "frontend": true + } + }, + { + "metadata": { + "name": "live-service-web-worker", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "This will use a webworker thread to processes events rather than the main thread", + "stage": "experimental", + "codeowner": "@grafana/grafana-app-platform-squad", + "frontend": true + } + }, + { + "metadata": { + "name": "kubernetesPlaylists", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Use the kubernetes API in the frontend for playlists, and route /api/playlist requests to k8s", + "stage": "experimental", + "codeowner": "@grafana/grafana-app-platform-squad", + "requiresRestart": true + } + }, + { + "metadata": { + "name": "flameGraphItemCollapsing", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Allow collapsing of flame graph items", + "stage": "experimental", + "codeowner": "@grafana/observability-traces-and-profiling", + "frontend": true + } + }, + { + "metadata": { + "name": "regressionTransformation", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Enables regression analysis transformation", + "stage": "preview", + "codeowner": "@grafana/dataviz-squad", + "frontend": true + } + }, + { + "metadata": { + "name": "enablePluginsTracingByDefault", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Enable plugin tracing for all external plugins", + "stage": "GA", + "codeowner": "@grafana/plugins-platform-backend", + "requiresRestart": true + } + }, + { + "metadata": { + "name": "newPDFRendering", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "New implementation for the dashboard-to-PDF rendering", + "stage": "preview", + "codeowner": "@grafana/sharing-squad" + } + }, + { + "metadata": { + "name": "topnav", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Enables topnav support in external plugins. The new Grafana navigation cannot be disabled.", + "stage": "deprecated", + "codeowner": "@grafana/grafana-frontend-platform" + } + }, + { + "metadata": { + "name": "unifiedStorage", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "SQL-based k8s storage", + "stage": "experimental", + "codeowner": "@grafana/grafana-app-platform-squad", + "requiresDevMode": true, + "requiresRestart": true + } + }, + { + "metadata": { + "name": "mysqlAnsiQuotes", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Use double quotes to escape keyword in a MySQL query", + "stage": "experimental", + "codeowner": "@grafana/backend-platform" + } + }, + { + "metadata": { + "name": "angularDeprecationUI", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Display Angular warnings in dashboards and panels", + "stage": "GA", + "codeowner": "@grafana/plugins-platform-backend", + "frontend": true + } + }, + { + "metadata": { + "name": "lokiQueryHints", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Enables query hints for Loki", + "stage": "GA", + "codeowner": "@grafana/observability-logs", + "frontend": true + } + }, { "metadata": { "name": "autoMigrateGraphPanel", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" }, "spec": { "description": "Migrate old graph panel to supported time series panel - broken out from autoMigrateOldPanels to enable granular tracking", @@ -1999,181 +1959,48 @@ }, { "metadata": { - "name": "autoMigrateTablePanel", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" + "name": "lokiQuerySplittingConfig", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" }, "spec": { - "description": "Migrate old table panel to supported table panel - broken out from autoMigrateOldPanels to enable granular tracking", + "description": "Give users the option to configure split durations for Loki queries", + "stage": "experimental", + "codeowner": "@grafana/observability-logs", + "frontend": true + } + }, + { + "metadata": { + "name": "awsDatasourcesNewFormStyling", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Applies new form styling for configuration and query editors in AWS plugins", "stage": "preview", - "codeowner": "@grafana/dataviz-squad", + "codeowner": "@grafana/aws-datasources", "frontend": true } }, { "metadata": { - "name": "individualCookiePreferences", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" + "name": "disableEnvelopeEncryption", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" }, "spec": { - "description": "Support overriding cookie preferences per user", - "stage": "experimental", - "codeowner": "@grafana/backend-platform" - } - }, - { - "metadata": { - "name": "disableSSEDataplane", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Disables dataplane specific processing in server side expressions.", - "stage": "experimental", - "codeowner": "@grafana/observability-metrics" - } - }, - { - "metadata": { - "name": "externalCorePlugins", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Allow core plugins to be loaded as external", - "stage": "experimental", - "codeowner": "@grafana/plugins-platform-backend" - } - }, - { - "metadata": { - "name": "pluginsAPIMetrics", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Sends metrics of public grafana packages usage by plugins", - "stage": "experimental", - "codeowner": "@grafana/plugins-platform-backend", - "frontend": true - } - }, - { - "metadata": { - "name": "dashboardSceneSolo", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Enables rendering dashboards using scenes for solo panels", - "stage": "experimental", - "codeowner": "@grafana/dashboards-squad", - "frontend": true - } - }, - { - "metadata": { - "name": "datasourceQueryMultiStatus", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Introduce HTTP 207 Multi Status for api/ds/query", - "stage": "experimental", - "codeowner": "@grafana/plugins-platform-backend" - } - }, - { - "metadata": { - "name": "datatrails", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Enables the new core app datatrails", - "stage": "experimental", - "codeowner": "@grafana/dashboards-squad", - "frontend": true, - "hideFromDocs": true - } - }, - { - "metadata": { - "name": "kubernetesFeatureToggles", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Use the kubernetes API for feature toggle management in the frontend", - "stage": "experimental", - "codeowner": "@grafana/grafana-operator-experience-squad", - "frontend": true, + "description": "Disable envelope encryption (emergency only)", + "stage": "GA", + "codeowner": "@grafana/grafana-as-code", "hideFromAdminPage": true } }, - { - "metadata": { - "name": "sqlExpressions", - "resourceVersion": "1709648236447", - "creationTimestamp": "2024-03-05T14:17:16Z" - }, - "spec": { - "description": "Enables using SQL and DuckDB functions as Expressions.", - "stage": "experimental", - "codeowner": "@grafana/grafana-app-platform-squad" - } - }, - { - "metadata": { - "name": "betterPageScrolling", - "resourceVersion": "1709583501630", - "creationTimestamp": "2024-03-04T20:18:21Z" - }, - "spec": { - "description": "Removes CustomScrollbar from the UI, relying on native browser scrollbars", - "stage": "GA", - "codeowner": "@grafana/grafana-frontend-platform", - "frontend": true - } - }, - { - "metadata": { - "name": "emailVerificationEnforcement", - "resourceVersion": "1710164083965", - "creationTimestamp": "2024-03-11T13:34:43Z", - "deletionTimestamp": "2024-03-22T11:25:34Z" - }, - "spec": { - "description": "Force email verification for users, even when authenticating through sso.", - "stage": "experimental", - "codeowner": "@grafana/identity-access-team", - "hideFromAdminPage": true, - "hideFromDocs": true - } - }, - { - "metadata": { - "name": "ssoSettingsSAML", - "resourceVersion": "1710411764296", - "creationTimestamp": "2024-03-14T09:41:17Z", - "annotations": { - "grafana.app/updatedTimestamp": "2024-03-14 10:22:44.296694 +0000 UTC" - } - }, - "spec": { - "description": "Use the new SSO Settings API to configure the SAML connector", - "stage": "experimental", - "codeowner": "@grafana/identity-access-team", - "hideFromAdminPage": true, - "hideFromDocs": true - } - }, { "metadata": { "name": "publicDashboardsScene", - "resourceVersion": "1710951139684", - "creationTimestamp": "2024-03-20T16:12:19Z" + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" }, "spec": { "description": "Enables public dashboard rendering using scenes", @@ -2184,16 +2011,40 @@ }, { "metadata": { - "name": "autoMigrateXYChartPanel", - "resourceVersion": "1711119444221", - "creationTimestamp": "2024-03-22T14:57:24Z" + "name": "alertingBacktesting", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" }, "spec": { - "description": "Migrate old XYChart panel to new XYChart2 model", - "stage": "preview", - "codeowner": "@grafana/dataviz-squad", + "description": "Rule backtesting API for alerting", + "stage": "experimental", + "codeowner": "@grafana/alerting-squad" + } + }, + { + "metadata": { + "name": "dashboardEmbed", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Allow embedding dashboard for external use in Code editors", + "stage": "experimental", + "codeowner": "@grafana/grafana-as-code", "frontend": true } + }, + { + "metadata": { + "name": "alertmanagerRemotePrimary", + "resourceVersion": "1711130211436", + "creationTimestamp": "2024-03-22T17:56:51Z" + }, + "spec": { + "description": "Enable Grafana to have a remote Alertmanager instance as the primary Alertmanager.", + "stage": "experimental", + "codeowner": "@grafana/alerting-squad" + } } ] } \ No newline at end of file diff --git a/public/app/plugins/datasource/prometheus/configuration/ConfigEditorPackage.tsx b/public/app/plugins/datasource/prometheus/configuration/ConfigEditorPackage.tsx new file mode 100644 index 00000000000..a2cb78f884c --- /dev/null +++ b/public/app/plugins/datasource/prometheus/configuration/ConfigEditorPackage.tsx @@ -0,0 +1,152 @@ +import { css } from '@emotion/css'; +import React from 'react'; + +import { SIGV4ConnectionConfig } from '@grafana/aws-sdk'; +import { DataSourcePluginOptionsEditorProps, DataSourceSettings, GrafanaTheme2 } from '@grafana/data'; +import { AdvancedHttpSettings, ConfigSection, DataSourceDescription } from '@grafana/experimental'; +import { AlertingSettingsOverhaul, PromOptions, PromSettings } from '@grafana/prometheus'; +import { config } from '@grafana/runtime'; +import { Alert, FieldValidationMessage, useTheme2 } from '@grafana/ui'; + +import { AzureAuthSettings } from './AzureAuthSettings'; +import { hasCredentials, setDefaultCredentials, resetCredentials } from './AzureCredentialsConfig'; +import { DataSourcehttpSettingsOverhaul } from './DataSourceHttpSettingsOverhaulPackage'; + +export const PROM_CONFIG_LABEL_WIDTH = 30; + +export type Props = DataSourcePluginOptionsEditorProps; + +export const ConfigEditor = (props: Props) => { + const { options, onOptionsChange } = props; + + const azureAuthSettings = { + azureAuthSupported: config.azureAuthEnabled, + getAzureAuthEnabled: (config: DataSourceSettings): boolean => hasCredentials(config), + setAzureAuthEnabled: (config: DataSourceSettings, enabled: boolean) => + enabled ? setDefaultCredentials(config) : resetCredentials(config), + azureSettingsUI: AzureAuthSettings, + }; + + const theme = useTheme2(); + const styles = overhaulStyles(theme); + + return ( + <> + {options.access === 'direct' && ( + + Browser access mode in the Prometheus data source is no longer available. Switch to server access mode. + + )} + +
+ + } + secureSocksDSProxyEnabled={config.secureSocksDSProxyEnabled} + /> +
+ + + options={options} onOptionsChange={onOptionsChange} /> + + + + ); +}; +/** + * Use this to return a url in a tooltip in a field. Don't forget to make the field interactive to be able to click on the tooltip + * @param url + * @returns + */ +export function docsTip(url?: string) { + const docsUrl = 'https://grafana.com/docs/grafana/latest/datasources/prometheus/#configure-the-data-source'; + + return ( + + Visit docs for more details here. + + ); +} + +export const validateInput = ( + input: string, + pattern: string | RegExp, + errorMessage?: string +): boolean | JSX.Element => { + const defaultErrorMessage = 'Value is not valid'; + if (input && !input.match(pattern)) { + return {errorMessage ? errorMessage : defaultErrorMessage}; + } else { + return true; + } +}; + +export function overhaulStyles(theme: GrafanaTheme2) { + return { + additionalSettings: css({ + marginBottom: '25px', + }), + secondaryGrey: css({ + color: `${theme.colors.secondary.text}`, + opacity: '65%', + }), + inlineError: css({ + margin: '0px 0px 4px 245px', + }), + switchField: css({ + alignItems: 'center', + }), + sectionHeaderPadding: css({ + paddingTop: '32px', + }), + sectionBottomPadding: css({ + paddingBottom: '28px', + }), + subsectionText: css({ + fontSize: '12px', + }), + hrBottomSpace: css({ + marginBottom: '56px', + }), + hrTopSpace: css({ + marginTop: '50px', + }), + textUnderline: css({ + textDecoration: 'underline', + }), + versionMargin: css({ + marginBottom: '12px', + }), + advancedHTTPSettingsMargin: css({ + margin: '24px 0 8px 0', + }), + advancedSettings: css({ + paddingTop: '32px', + }), + alertingTop: css({ + marginTop: '40px !important', + }), + overhaulPageHeading: css({ + fontWeight: '400', + }), + container: css({ + maxwidth: '578', + }), + }; +} diff --git a/public/app/plugins/datasource/prometheus/configuration/DataSourceHttpSettingsOverhaulPackage.tsx b/public/app/plugins/datasource/prometheus/configuration/DataSourceHttpSettingsOverhaulPackage.tsx new file mode 100644 index 00000000000..5054e96de51 --- /dev/null +++ b/public/app/plugins/datasource/prometheus/configuration/DataSourceHttpSettingsOverhaulPackage.tsx @@ -0,0 +1,175 @@ +import React, { ReactElement, useState } from 'react'; + +import { DataSourceSettings } from '@grafana/data'; +import { Auth, ConnectionSettings, convertLegacyAuthProps, AuthMethod } from '@grafana/experimental'; +import { PromOptions, docsTip, overhaulStyles } from '@grafana/prometheus'; +import { SecureSocksProxySettings, useTheme2 } from '@grafana/ui'; +// NEED TO EXPORT THIS FROM GRAFANA/UI FOR EXTERNAL DS +import { AzureAuthSettings } from '@grafana/ui/src/components/DataSourceSettings/types'; + +type Props = { + options: DataSourceSettings; + onOptionsChange: (options: DataSourceSettings) => void; + azureAuthSettings: AzureAuthSettings; + sigV4AuthToggleEnabled: boolean | undefined; + renderSigV4Editor: React.ReactNode; + secureSocksDSProxyEnabled: boolean; +}; + +// these are not available yet in grafana +export type CustomMethodId = `custom-${string}`; + +export type CustomMethod = { + id: CustomMethodId; + label: string; + description: string; + component: ReactElement; +}; + +export const DataSourcehttpSettingsOverhaul = (props: Props) => { + const { + options, + onOptionsChange, + azureAuthSettings, + sigV4AuthToggleEnabled, + renderSigV4Editor, + secureSocksDSProxyEnabled, + } = props; + + const newAuthProps = convertLegacyAuthProps({ + config: options, + onChange: onOptionsChange, + }); + + const theme = useTheme2(); + const styles = overhaulStyles(theme); + + // for custom auth methods sigV4 and azure auth + let customMethods: CustomMethod[] = []; + + const [sigV4Selected, setSigV4Selected] = useState(options.jsonData.sigV4Auth || false); + + const sigV4Id = 'custom-sigV4Id'; + + const sigV4Option: CustomMethod = { + id: sigV4Id, + label: 'SigV4 auth', + description: 'This is SigV4 auth description', + component: <>{renderSigV4Editor}, + }; + + if (sigV4AuthToggleEnabled) { + customMethods.push(sigV4Option); + } + + const azureAuthEnabled: boolean = + (azureAuthSettings?.azureAuthSupported && azureAuthSettings.getAzureAuthEnabled(options)) || false; + + const [azureAuthSelected, setAzureAuthSelected] = useState(azureAuthEnabled); + + const azureAuthId = 'custom-azureAuthId'; + + const azureAuthOption: CustomMethod = { + id: azureAuthId, + label: 'Azure auth', + description: 'This is Azure auth description', + component: ( + <> + {azureAuthSettings.azureSettingsUI && ( + + )} + + ), + }; + + // allow the option to show in the dropdown + if (azureAuthSettings?.azureAuthSupported) { + customMethods.push(azureAuthOption); + } + + function returnSelectedMethod() { + if (sigV4Selected) { + return sigV4Id; + } + + if (azureAuthSelected) { + return azureAuthId; + } + + return newAuthProps.selectedMethod; + } + + // Do we need this switch anymore? Update the language. + let urlTooltip; + switch (options.access) { + case 'direct': + urlTooltip = ( + <> + Your access method is Browser, this means the URL needs to be accessible from the browser. + {docsTip()} + + ); + break; + case 'proxy': + urlTooltip = ( + <> + Your access method is Server, this means the URL needs to be accessible from the grafana + backend/server. + {docsTip()} + + ); + break; + default: + urlTooltip = <>Specify a complete HTTP URL (for example http://your_server:8080) {docsTip()}; + } + + return ( + <> + +
+ { + // sigV4Id + if (sigV4AuthToggleEnabled) { + setSigV4Selected(method === sigV4Id); + } + + // Azure + if (azureAuthSettings?.azureAuthSupported) { + setAzureAuthSelected(method === azureAuthId); + azureAuthSettings.setAzureAuthEnabled(options, method === azureAuthId); + } + + onOptionsChange({ + ...options, + basicAuth: method === AuthMethod.BasicAuth, + withCredentials: method === AuthMethod.CrossSiteCredentials, + jsonData: { + ...options.jsonData, + sigV4Auth: method === sigV4Id, + oauthPassThru: method === AuthMethod.OAuthForward, + }, + }); + }} + // If your method is selected pass its id to `selectedMethod`, + // otherwise pass the id from converted legacy data + selectedMethod={returnSelectedMethod()} + /> +
+ {secureSocksDSProxyEnabled && ( + <> + +
+ + )} + + ); +}; diff --git a/public/app/plugins/datasource/prometheus/module.ts b/public/app/plugins/datasource/prometheus/module.ts index ba33b7f90cb..53891d091ea 100644 --- a/public/app/plugins/datasource/prometheus/module.ts +++ b/public/app/plugins/datasource/prometheus/module.ts @@ -1,11 +1,27 @@ import { DataSourcePlugin } from '@grafana/data'; +import { + PrometheusDatasource as PrometheusDatasourcePackage, + PromQueryEditorByApp as PromQueryEditorByAppPackage, + PromCheatSheet as PromCheatSheetPackage, +} from '@grafana/prometheus'; +import { config } from '@grafana/runtime'; import PromCheatSheet from './components/PromCheatSheet'; import PromQueryEditorByApp from './components/PromQueryEditorByApp'; import { ConfigEditor } from './configuration/ConfigEditor'; +import { ConfigEditor as ConfigEditorPackage } from './configuration/ConfigEditorPackage'; import { PrometheusDatasource } from './datasource'; -export const plugin = new DataSourcePlugin(PrometheusDatasource) - .setQueryEditor(PromQueryEditorByApp) - .setConfigEditor(ConfigEditor) - .setQueryEditorHelp(PromCheatSheet); +const usePackage = config.featureToggles.usePrometheusFrontendPackage; + +const PrometheusDataSourceUsed = usePackage ? PrometheusDatasource : PrometheusDatasourcePackage; +const PromQueryEditorByAppUsed = usePackage ? PromQueryEditorByApp : PromQueryEditorByAppPackage; +const ConfigEditorUsed = usePackage ? ConfigEditor : ConfigEditorPackage; +const PromCheatSheetUsed = usePackage ? PromCheatSheet : PromCheatSheetPackage; + +// @ts-ignore These type errors will be removed when we fully migrate to the @grafana/prometheus package +export const plugin = new DataSourcePlugin(PrometheusDataSourceUsed) + // @ts-ignore These type errors will be removed when we fully migrate to the @grafana/prometheus package + .setQueryEditor(PromQueryEditorByAppUsed) + .setConfigEditor(ConfigEditorUsed) + .setQueryEditorHelp(PromCheatSheetUsed);