mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
FeatureFlags: Change alpha/beta language to align with release staging language (#69422)
This commit is contained in:
parent
4e1f69d83f
commit
8aae6b679a
@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
aliases:
|
aliases:
|
||||||
- /docs/grafana/latest/setup-grafana/configure-grafana/feature-toggles/
|
- /docs/grafana/latest/setup-grafana/configure-grafana/feature-toggles/
|
||||||
description: Learn about toggles for experimental and beta features, which you can enable or disable.
|
description: Learn about feature toggles, which you can enable or disable.
|
||||||
title: Configure feature toggles
|
title: Configure feature toggles
|
||||||
weight: 150
|
weight: 150
|
||||||
---
|
---
|
||||||
@ -11,13 +11,13 @@ weight: 150
|
|||||||
|
|
||||||
# Configure feature toggles
|
# Configure feature toggles
|
||||||
|
|
||||||
You use feature toggles, also known as feature flags, to turn experimental or beta features on and off in Grafana. Although we do not recommend using these features in production, you can turn on feature toggles to try out new functionality in development or test environments.
|
You use feature toggles, also known as feature flags, to enable or disable features in Grafana. You can turn on feature toggles to try out new functionality in development or test environments.
|
||||||
|
|
||||||
This page contains a list of available feature toggles. To learn how to turn on feature toggles, refer to our [Configure Grafana documentation]({{< relref "../_index.md#feature_toggles" >}}). Feature toggles are also available to Grafana Cloud Advanced customers. If you use Grafana Cloud Advanced, you can open a support ticket and specify the feature toggles and stack for which you want them enabled.
|
This page contains a list of available feature toggles. To learn how to turn on feature toggles, refer to our [Configure Grafana documentation]({{< relref "../_index.md#feature_toggles" >}}). Feature toggles are also available to Grafana Cloud Advanced customers. If you use Grafana Cloud Advanced, you can open a support ticket and specify the feature toggles and stack for which you want them enabled.
|
||||||
|
|
||||||
## Stable feature toggles
|
## Feature toggles
|
||||||
|
|
||||||
Some stable features are enabled by default. You can disable a stable feature by setting the feature flag to "false" in the configuration.
|
Some features are enabled by default. You can disable these feature by setting the feature flag to "false" in the configuration.
|
||||||
|
|
||||||
| Feature toggle name | Description | Enabled by default |
|
| Feature toggle name | Description | Enabled by default |
|
||||||
| ------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------ |
|
| ------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------ |
|
||||||
@ -41,7 +41,7 @@ Some stable features are enabled by default. You can disable a stable feature by
|
|||||||
| `authenticationConfigUI` | Enables authentication configuration UI | Yes |
|
| `authenticationConfigUI` | Enables authentication configuration UI | Yes |
|
||||||
| `advancedDataSourcePicker` | Enable a new data source picker with contextual information, recently used order and advanced mode | Yes |
|
| `advancedDataSourcePicker` | Enable a new data source picker with contextual information, recently used order and advanced mode | Yes |
|
||||||
|
|
||||||
## Beta feature toggles
|
## Preview feature toggles
|
||||||
|
|
||||||
| Feature toggle name | Description |
|
| Feature toggle name | Description |
|
||||||
| ------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
| ------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||||
@ -67,10 +67,10 @@ Some stable features are enabled by default. You can disable a stable feature by
|
|||||||
| `dataSourcePageHeader` | Apply new pageHeader UI in data source edit page |
|
| `dataSourcePageHeader` | Apply new pageHeader UI in data source edit page |
|
||||||
| `sqlDatasourceDatabaseSelection` | Enables previous SQL data source dataset dropdown behavior |
|
| `sqlDatasourceDatabaseSelection` | Enables previous SQL data source dataset dropdown behavior |
|
||||||
|
|
||||||
## Alpha feature toggles
|
## Experimental feature toggles
|
||||||
|
|
||||||
These features are early in their development lifecycle and so are not yet supported in Grafana Cloud.
|
These features are early in their development lifecycle and so are not yet supported in Grafana Cloud.
|
||||||
Alpha features might be changed or removed without prior notice.
|
Experimental features might be changed or removed without prior notice.
|
||||||
|
|
||||||
| Feature toggle name | Description |
|
| Feature toggle name | Description |
|
||||||
| ---------------------------------- | ------------------------------------------------------------------------------------------------------------ |
|
| ---------------------------------- | ------------------------------------------------------------------------------------------------------------ |
|
||||||
|
@ -9,43 +9,48 @@ type FeatureToggles interface {
|
|||||||
IsEnabled(flag string) bool
|
IsEnabled(flag string) bool
|
||||||
}
|
}
|
||||||
|
|
||||||
// FeatureFlagState indicates the quality level
|
// FeatureFlagStage indicates the quality level
|
||||||
type FeatureFlagState int
|
type FeatureFlagStage int
|
||||||
|
|
||||||
const (
|
const (
|
||||||
// FeatureStateUnknown indicates that no state is specified
|
// FeatureStageUnknown indicates that no state is specified
|
||||||
FeatureStateUnknown FeatureFlagState = iota
|
FeatureStageUnknown FeatureFlagStage = iota
|
||||||
|
|
||||||
// FeatureStateAlpha the feature is in active development and may change at any time
|
// FeatureStageExperimental -- Does this work for Grafana Labs?
|
||||||
FeatureStateAlpha
|
FeatureStageExperimental
|
||||||
|
|
||||||
// FeatureStateBeta the feature is still in development, but settings will have migrations
|
// FeatureStagePrivatePreview -- Does this work for a limited number of customers?
|
||||||
FeatureStateBeta
|
FeatureStagePrivatePreview
|
||||||
|
|
||||||
// FeatureStateStable this is a stable feature
|
// FeatureStagePublicPreview -- Does this work for most customers?
|
||||||
FeatureStateStable
|
FeatureStagePublicPreview
|
||||||
|
|
||||||
// FeatureStateDeprecated the feature will be removed in the future
|
// FeatureStageGeneralAvailability -- Feature is available to all applicable customers
|
||||||
FeatureStateDeprecated
|
FeatureStageGeneralAvailability
|
||||||
|
|
||||||
|
// FeatureStageDeprecated the feature will be removed in the future
|
||||||
|
FeatureStageDeprecated
|
||||||
)
|
)
|
||||||
|
|
||||||
func (s FeatureFlagState) String() string {
|
func (s FeatureFlagStage) String() string {
|
||||||
switch s {
|
switch s {
|
||||||
case FeatureStateAlpha:
|
case FeatureStageExperimental:
|
||||||
return "alpha"
|
return "experimental"
|
||||||
case FeatureStateBeta:
|
case FeatureStagePrivatePreview:
|
||||||
return "beta"
|
return "privatePreview"
|
||||||
case FeatureStateStable:
|
case FeatureStagePublicPreview:
|
||||||
return "stable"
|
return "preview"
|
||||||
case FeatureStateDeprecated:
|
case FeatureStageGeneralAvailability:
|
||||||
|
return "GA"
|
||||||
|
case FeatureStageDeprecated:
|
||||||
return "deprecated"
|
return "deprecated"
|
||||||
case FeatureStateUnknown:
|
case FeatureStageUnknown:
|
||||||
}
|
}
|
||||||
return "unknown"
|
return "unknown"
|
||||||
}
|
}
|
||||||
|
|
||||||
// MarshalJSON marshals the enum as a quoted json string
|
// MarshalJSON marshals the enum as a quoted json string
|
||||||
func (s FeatureFlagState) MarshalJSON() ([]byte, error) {
|
func (s FeatureFlagStage) MarshalJSON() ([]byte, error) {
|
||||||
buffer := bytes.NewBufferString(`"`)
|
buffer := bytes.NewBufferString(`"`)
|
||||||
buffer.WriteString(s.String())
|
buffer.WriteString(s.String())
|
||||||
buffer.WriteString(`"`)
|
buffer.WriteString(`"`)
|
||||||
@ -53,7 +58,7 @@ func (s FeatureFlagState) MarshalJSON() ([]byte, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// UnmarshalJSON unmarshals a quoted json string to the enum value
|
// UnmarshalJSON unmarshals a quoted json string to the enum value
|
||||||
func (s *FeatureFlagState) UnmarshalJSON(b []byte) error {
|
func (s *FeatureFlagStage) UnmarshalJSON(b []byte) error {
|
||||||
var j string
|
var j string
|
||||||
err := json.Unmarshal(b, &j)
|
err := json.Unmarshal(b, &j)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -62,19 +67,30 @@ func (s *FeatureFlagState) UnmarshalJSON(b []byte) error {
|
|||||||
|
|
||||||
switch j {
|
switch j {
|
||||||
case "alpha":
|
case "alpha":
|
||||||
*s = FeatureStateAlpha
|
fallthrough
|
||||||
|
case "experimental":
|
||||||
|
*s = FeatureStageExperimental
|
||||||
|
|
||||||
|
case "privatePreview":
|
||||||
|
*s = FeatureStagePrivatePreview
|
||||||
|
|
||||||
case "beta":
|
case "beta":
|
||||||
*s = FeatureStateBeta
|
fallthrough
|
||||||
|
case "preview":
|
||||||
|
*s = FeatureStagePublicPreview
|
||||||
|
|
||||||
case "stable":
|
case "stable":
|
||||||
*s = FeatureStateStable
|
fallthrough
|
||||||
|
case "ga":
|
||||||
|
fallthrough
|
||||||
|
case "GA":
|
||||||
|
*s = FeatureStageGeneralAvailability
|
||||||
|
|
||||||
case "deprecated":
|
case "deprecated":
|
||||||
*s = FeatureStateDeprecated
|
*s = FeatureStageDeprecated
|
||||||
|
|
||||||
default:
|
default:
|
||||||
*s = FeatureStateUnknown
|
*s = FeatureStageUnknown
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
@ -82,7 +98,7 @@ func (s *FeatureFlagState) UnmarshalJSON(b []byte) error {
|
|||||||
type FeatureFlag struct {
|
type FeatureFlag struct {
|
||||||
Name string `json:"name" yaml:"name"` // Unique name
|
Name string `json:"name" yaml:"name"` // Unique name
|
||||||
Description string `json:"description"`
|
Description string `json:"description"`
|
||||||
State FeatureFlagState `json:"state,omitempty"`
|
Stage FeatureFlagStage `json:"stage,omitempty"`
|
||||||
DocsURL string `json:"docsURL,omitempty"`
|
DocsURL string `json:"docsURL,omitempty"`
|
||||||
|
|
||||||
// Owner person or team that owns this feature flag
|
// Owner person or team that owns this feature flag
|
||||||
|
@ -48,8 +48,8 @@ func (fm *FeatureManager) registerFlags(flags ...FeatureFlag) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// The most recently defined state
|
// The most recently defined state
|
||||||
if add.State != FeatureStateUnknown {
|
if add.Stage != FeatureStageUnknown {
|
||||||
flag.State = add.State
|
flag.Stage = add.Stage
|
||||||
}
|
}
|
||||||
|
|
||||||
// Only gets more restrictive
|
// Only gets more restrictive
|
||||||
|
@ -12,51 +12,51 @@ var (
|
|||||||
{
|
{
|
||||||
Name: "trimDefaults",
|
Name: "trimDefaults",
|
||||||
Description: "Use cue schema to remove values that will be applied automatically",
|
Description: "Use cue schema to remove values that will be applied automatically",
|
||||||
State: FeatureStateBeta,
|
Stage: FeatureStagePublicPreview,
|
||||||
Owner: grafanaAsCodeSquad,
|
Owner: grafanaAsCodeSquad,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "disableEnvelopeEncryption",
|
Name: "disableEnvelopeEncryption",
|
||||||
Description: "Disable envelope encryption (emergency only)",
|
Description: "Disable envelope encryption (emergency only)",
|
||||||
State: FeatureStateStable,
|
Stage: FeatureStageGeneralAvailability,
|
||||||
Owner: grafanaAsCodeSquad,
|
Owner: grafanaAsCodeSquad,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "live-service-web-worker",
|
Name: "live-service-web-worker",
|
||||||
Description: "This will use a webworker thread to processes events rather than the main thread",
|
Description: "This will use a webworker thread to processes events rather than the main thread",
|
||||||
State: FeatureStateAlpha,
|
Stage: FeatureStageExperimental,
|
||||||
FrontendOnly: true,
|
FrontendOnly: true,
|
||||||
Owner: grafanaAppPlatformSquad,
|
Owner: grafanaAppPlatformSquad,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "queryOverLive",
|
Name: "queryOverLive",
|
||||||
Description: "Use Grafana Live WebSocket to execute backend queries",
|
Description: "Use Grafana Live WebSocket to execute backend queries",
|
||||||
State: FeatureStateAlpha,
|
Stage: FeatureStageExperimental,
|
||||||
FrontendOnly: true,
|
FrontendOnly: true,
|
||||||
Owner: grafanaAppPlatformSquad,
|
Owner: grafanaAppPlatformSquad,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "panelTitleSearch",
|
Name: "panelTitleSearch",
|
||||||
Description: "Search for dashboards using panel title",
|
Description: "Search for dashboards using panel title",
|
||||||
State: FeatureStateBeta,
|
Stage: FeatureStagePublicPreview,
|
||||||
Owner: grafanaAppPlatformSquad,
|
Owner: grafanaAppPlatformSquad,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "prometheusAzureOverrideAudience",
|
Name: "prometheusAzureOverrideAudience",
|
||||||
Description: "Experimental. Allow override default AAD audience for Azure Prometheus endpoint",
|
Description: "Experimental. Allow override default AAD audience for Azure Prometheus endpoint",
|
||||||
State: FeatureStateBeta,
|
Stage: FeatureStagePublicPreview,
|
||||||
Owner: grafanaObservabilityMetricsSquad,
|
Owner: grafanaObservabilityMetricsSquad,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "publicDashboards",
|
Name: "publicDashboards",
|
||||||
Description: "Enables public access to dashboards",
|
Description: "Enables public access to dashboards",
|
||||||
State: FeatureStateBeta,
|
Stage: FeatureStagePublicPreview,
|
||||||
Owner: grafanaDashboardsSquad,
|
Owner: grafanaDashboardsSquad,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "publicDashboardsEmailSharing",
|
Name: "publicDashboardsEmailSharing",
|
||||||
Description: "Enables public dashboard sharing to be restricted to only allowed emails",
|
Description: "Enables public dashboard sharing to be restricted to only allowed emails",
|
||||||
State: FeatureStateBeta,
|
Stage: FeatureStagePublicPreview,
|
||||||
RequiresLicense: true,
|
RequiresLicense: true,
|
||||||
Owner: grafanaDashboardsSquad,
|
Owner: grafanaDashboardsSquad,
|
||||||
HideFromDocs: true,
|
HideFromDocs: true,
|
||||||
@ -64,31 +64,31 @@ var (
|
|||||||
{
|
{
|
||||||
Name: "lokiLive",
|
Name: "lokiLive",
|
||||||
Description: "Support WebSocket streaming for loki (early prototype)",
|
Description: "Support WebSocket streaming for loki (early prototype)",
|
||||||
State: FeatureStateAlpha,
|
Stage: FeatureStageExperimental,
|
||||||
Owner: grafanaObservabilityLogsSquad,
|
Owner: grafanaObservabilityLogsSquad,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "featureHighlights",
|
Name: "featureHighlights",
|
||||||
Description: "Highlight Grafana Enterprise features",
|
Description: "Highlight Grafana Enterprise features",
|
||||||
State: FeatureStateStable,
|
Stage: FeatureStageGeneralAvailability,
|
||||||
Owner: grafanaAsCodeSquad,
|
Owner: grafanaAsCodeSquad,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "migrationLocking",
|
Name: "migrationLocking",
|
||||||
Description: "Lock database during migrations",
|
Description: "Lock database during migrations",
|
||||||
State: FeatureStateBeta,
|
Stage: FeatureStagePublicPreview,
|
||||||
Owner: grafanaBackendPlatformSquad,
|
Owner: grafanaBackendPlatformSquad,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "storage",
|
Name: "storage",
|
||||||
Description: "Configurable storage for dashboards, datasources, and resources",
|
Description: "Configurable storage for dashboards, datasources, and resources",
|
||||||
State: FeatureStateAlpha,
|
Stage: FeatureStageExperimental,
|
||||||
Owner: grafanaAppPlatformSquad,
|
Owner: grafanaAppPlatformSquad,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "exploreMixedDatasource",
|
Name: "exploreMixedDatasource",
|
||||||
Description: "Enable mixed datasource in Explore",
|
Description: "Enable mixed datasource in Explore",
|
||||||
State: FeatureStateStable,
|
Stage: FeatureStageGeneralAvailability,
|
||||||
FrontendOnly: true,
|
FrontendOnly: true,
|
||||||
Expression: "true", // turned on by default
|
Expression: "true", // turned on by default
|
||||||
Owner: grafanaExploreSquad,
|
Owner: grafanaExploreSquad,
|
||||||
@ -96,141 +96,141 @@ var (
|
|||||||
{
|
{
|
||||||
Name: "newTraceViewHeader",
|
Name: "newTraceViewHeader",
|
||||||
Description: "Shows the new trace view header",
|
Description: "Shows the new trace view header",
|
||||||
State: FeatureStateAlpha,
|
Stage: FeatureStageExperimental,
|
||||||
FrontendOnly: true,
|
FrontendOnly: true,
|
||||||
Owner: grafanaObservabilityTracesAndProfilingSquad,
|
Owner: grafanaObservabilityTracesAndProfilingSquad,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "correlations",
|
Name: "correlations",
|
||||||
Description: "Correlations page",
|
Description: "Correlations page",
|
||||||
State: FeatureStateBeta,
|
Stage: FeatureStagePublicPreview,
|
||||||
Owner: grafanaExploreSquad,
|
Owner: grafanaExploreSquad,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "datasourceQueryMultiStatus",
|
Name: "datasourceQueryMultiStatus",
|
||||||
Description: "Introduce HTTP 207 Multi Status for api/ds/query",
|
Description: "Introduce HTTP 207 Multi Status for api/ds/query",
|
||||||
State: FeatureStateAlpha,
|
Stage: FeatureStageExperimental,
|
||||||
Owner: grafanaPluginsPlatformSquad,
|
Owner: grafanaPluginsPlatformSquad,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "traceToMetrics",
|
Name: "traceToMetrics",
|
||||||
Description: "Enable trace to metrics links",
|
Description: "Enable trace to metrics links",
|
||||||
State: FeatureStateAlpha,
|
Stage: FeatureStageExperimental,
|
||||||
FrontendOnly: true,
|
FrontendOnly: true,
|
||||||
Owner: grafanaObservabilityTracesAndProfilingSquad,
|
Owner: grafanaObservabilityTracesAndProfilingSquad,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "newDBLibrary",
|
Name: "newDBLibrary",
|
||||||
Description: "Use jmoiron/sqlx rather than xorm for a few backend services",
|
Description: "Use jmoiron/sqlx rather than xorm for a few backend services",
|
||||||
State: FeatureStateBeta,
|
Stage: FeatureStagePublicPreview,
|
||||||
Owner: grafanaBackendPlatformSquad,
|
Owner: grafanaBackendPlatformSquad,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "validateDashboardsOnSave",
|
Name: "validateDashboardsOnSave",
|
||||||
Description: "Validate dashboard JSON POSTed to api/dashboards/db",
|
Description: "Validate dashboard JSON POSTed to api/dashboards/db",
|
||||||
State: FeatureStateBeta,
|
Stage: FeatureStagePublicPreview,
|
||||||
RequiresRestart: true,
|
RequiresRestart: true,
|
||||||
Owner: grafanaAsCodeSquad,
|
Owner: grafanaAsCodeSquad,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "autoMigrateOldPanels",
|
Name: "autoMigrateOldPanels",
|
||||||
Description: "Migrate old angular panels to supported versions (graph, table-old, worldmap, etc)",
|
Description: "Migrate old angular panels to supported versions (graph, table-old, worldmap, etc)",
|
||||||
State: FeatureStateBeta,
|
Stage: FeatureStagePublicPreview,
|
||||||
FrontendOnly: true,
|
FrontendOnly: true,
|
||||||
Owner: grafanaDatavizSquad,
|
Owner: grafanaDatavizSquad,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "disableAngular",
|
Name: "disableAngular",
|
||||||
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.",
|
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.",
|
||||||
State: FeatureStateBeta,
|
Stage: FeatureStagePublicPreview,
|
||||||
FrontendOnly: true,
|
FrontendOnly: true,
|
||||||
Owner: grafanaDatavizSquad,
|
Owner: grafanaDatavizSquad,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "prometheusWideSeries",
|
Name: "prometheusWideSeries",
|
||||||
Description: "Enable wide series responses in the Prometheus datasource",
|
Description: "Enable wide series responses in the Prometheus datasource",
|
||||||
State: FeatureStateAlpha,
|
Stage: FeatureStageExperimental,
|
||||||
Owner: grafanaObservabilityMetricsSquad,
|
Owner: grafanaObservabilityMetricsSquad,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "canvasPanelNesting",
|
Name: "canvasPanelNesting",
|
||||||
Description: "Allow elements nesting",
|
Description: "Allow elements nesting",
|
||||||
State: FeatureStateAlpha,
|
Stage: FeatureStageExperimental,
|
||||||
FrontendOnly: true,
|
FrontendOnly: true,
|
||||||
Owner: grafanaDatavizSquad,
|
Owner: grafanaDatavizSquad,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "scenes",
|
Name: "scenes",
|
||||||
Description: "Experimental framework to build interactive dashboards",
|
Description: "Experimental framework to build interactive dashboards",
|
||||||
State: FeatureStateAlpha,
|
Stage: FeatureStageExperimental,
|
||||||
FrontendOnly: true,
|
FrontendOnly: true,
|
||||||
Owner: grafanaDashboardsSquad,
|
Owner: grafanaDashboardsSquad,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "disableSecretsCompatibility",
|
Name: "disableSecretsCompatibility",
|
||||||
Description: "Disable duplicated secret storage in legacy tables",
|
Description: "Disable duplicated secret storage in legacy tables",
|
||||||
State: FeatureStateAlpha,
|
Stage: FeatureStageExperimental,
|
||||||
RequiresRestart: true,
|
RequiresRestart: true,
|
||||||
Owner: hostedGrafanaTeam,
|
Owner: hostedGrafanaTeam,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "logRequestsInstrumentedAsUnknown",
|
Name: "logRequestsInstrumentedAsUnknown",
|
||||||
Description: "Logs the path for requests that are instrumented as unknown",
|
Description: "Logs the path for requests that are instrumented as unknown",
|
||||||
State: FeatureStateAlpha,
|
Stage: FeatureStageExperimental,
|
||||||
Owner: hostedGrafanaTeam,
|
Owner: hostedGrafanaTeam,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "dataConnectionsConsole",
|
Name: "dataConnectionsConsole",
|
||||||
Description: "Enables a new top-level page called Connections. This page is an experiment that provides a better experience when you install and configure data sources and other plugins.",
|
Description: "Enables a new top-level page called Connections. This page is an experiment that provides a better experience when you install and configure data sources and other plugins.",
|
||||||
State: FeatureStateStable,
|
Stage: FeatureStageGeneralAvailability,
|
||||||
Expression: "true", // turned on by default
|
Expression: "true", // turned on by default
|
||||||
Owner: grafanaPluginsPlatformSquad,
|
Owner: grafanaPluginsPlatformSquad,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "topnav",
|
Name: "topnav",
|
||||||
Description: "Enables new top navigation and page layouts",
|
Description: "Enables new top navigation and page layouts",
|
||||||
State: FeatureStateStable,
|
Stage: FeatureStageGeneralAvailability,
|
||||||
Expression: "true", // enabled by default
|
Expression: "true", // enabled by default
|
||||||
Owner: grafanaFrontendPlatformSquad,
|
Owner: grafanaFrontendPlatformSquad,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "grpcServer",
|
Name: "grpcServer",
|
||||||
Description: "Run the GRPC server",
|
Description: "Run the GRPC server",
|
||||||
State: FeatureStateBeta,
|
Stage: FeatureStagePublicPreview,
|
||||||
Owner: grafanaAppPlatformSquad,
|
Owner: grafanaAppPlatformSquad,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "entityStore",
|
Name: "entityStore",
|
||||||
Description: "SQL-based entity store (requires storage flag also)",
|
Description: "SQL-based entity store (requires storage flag also)",
|
||||||
State: FeatureStateAlpha,
|
Stage: FeatureStageExperimental,
|
||||||
RequiresDevMode: true,
|
RequiresDevMode: true,
|
||||||
Owner: grafanaAppPlatformSquad,
|
Owner: grafanaAppPlatformSquad,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "cloudWatchCrossAccountQuerying",
|
Name: "cloudWatchCrossAccountQuerying",
|
||||||
Description: "Enables cross-account querying in CloudWatch datasources",
|
Description: "Enables cross-account querying in CloudWatch datasources",
|
||||||
State: FeatureStateStable,
|
Stage: FeatureStageGeneralAvailability,
|
||||||
Expression: "true", // enabled by default
|
Expression: "true", // enabled by default
|
||||||
Owner: awsPluginsSquad,
|
Owner: awsPluginsSquad,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "redshiftAsyncQueryDataSupport",
|
Name: "redshiftAsyncQueryDataSupport",
|
||||||
Description: "Enable async query data support for Redshift",
|
Description: "Enable async query data support for Redshift",
|
||||||
State: FeatureStateAlpha,
|
Stage: FeatureStageExperimental,
|
||||||
FrontendOnly: true,
|
FrontendOnly: true,
|
||||||
Owner: awsPluginsSquad,
|
Owner: awsPluginsSquad,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "athenaAsyncQueryDataSupport",
|
Name: "athenaAsyncQueryDataSupport",
|
||||||
Description: "Enable async query data support for Athena",
|
Description: "Enable async query data support for Athena",
|
||||||
State: FeatureStateAlpha,
|
Stage: FeatureStageExperimental,
|
||||||
FrontendOnly: true,
|
FrontendOnly: true,
|
||||||
Owner: awsPluginsSquad,
|
Owner: awsPluginsSquad,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "newPanelChromeUI",
|
Name: "newPanelChromeUI",
|
||||||
Description: "Show updated look and feel of grafana-ui PanelChrome: panel header, icons, and menu",
|
Description: "Show updated look and feel of grafana-ui PanelChrome: panel header, icons, and menu",
|
||||||
State: FeatureStateStable,
|
Stage: FeatureStageGeneralAvailability,
|
||||||
FrontendOnly: true,
|
FrontendOnly: true,
|
||||||
Expression: "true", // enabled by default
|
Expression: "true", // enabled by default
|
||||||
Owner: grafanaDashboardsSquad,
|
Owner: grafanaDashboardsSquad,
|
||||||
@ -238,43 +238,43 @@ var (
|
|||||||
{
|
{
|
||||||
Name: "showDashboardValidationWarnings",
|
Name: "showDashboardValidationWarnings",
|
||||||
Description: "Show warnings when dashboards do not validate against the schema",
|
Description: "Show warnings when dashboards do not validate against the schema",
|
||||||
State: FeatureStateAlpha,
|
Stage: FeatureStageExperimental,
|
||||||
Owner: grafanaDashboardsSquad,
|
Owner: grafanaDashboardsSquad,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "mysqlAnsiQuotes",
|
Name: "mysqlAnsiQuotes",
|
||||||
Description: "Use double quotes to escape keyword in a MySQL query",
|
Description: "Use double quotes to escape keyword in a MySQL query",
|
||||||
State: FeatureStateAlpha,
|
Stage: FeatureStageExperimental,
|
||||||
Owner: grafanaBackendPlatformSquad,
|
Owner: grafanaBackendPlatformSquad,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "accessControlOnCall",
|
Name: "accessControlOnCall",
|
||||||
Description: "Access control primitives for OnCall",
|
Description: "Access control primitives for OnCall",
|
||||||
State: FeatureStateBeta,
|
Stage: FeatureStagePublicPreview,
|
||||||
Owner: grafanaAuthnzSquad,
|
Owner: grafanaAuthnzSquad,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "nestedFolders",
|
Name: "nestedFolders",
|
||||||
Description: "Enable folder nesting",
|
Description: "Enable folder nesting",
|
||||||
State: FeatureStateBeta,
|
Stage: FeatureStagePublicPreview,
|
||||||
Owner: grafanaBackendPlatformSquad,
|
Owner: grafanaBackendPlatformSquad,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "accessTokenExpirationCheck",
|
Name: "accessTokenExpirationCheck",
|
||||||
Description: "Enable OAuth access_token expiration check and token refresh using the refresh_token",
|
Description: "Enable OAuth access_token expiration check and token refresh using the refresh_token",
|
||||||
State: FeatureStateStable,
|
Stage: FeatureStageGeneralAvailability,
|
||||||
Owner: grafanaAuthnzSquad,
|
Owner: grafanaAuthnzSquad,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "showTraceId",
|
Name: "showTraceId",
|
||||||
Description: "Show trace ids for requests",
|
Description: "Show trace ids for requests",
|
||||||
State: FeatureStateAlpha,
|
Stage: FeatureStageExperimental,
|
||||||
Owner: grafanaObservabilityLogsSquad,
|
Owner: grafanaObservabilityLogsSquad,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "emptyDashboardPage",
|
Name: "emptyDashboardPage",
|
||||||
Description: "Enable the redesigned user interface of a dashboard page that includes no panels",
|
Description: "Enable the redesigned user interface of a dashboard page that includes no panels",
|
||||||
State: FeatureStateStable,
|
Stage: FeatureStageGeneralAvailability,
|
||||||
FrontendOnly: true,
|
FrontendOnly: true,
|
||||||
Expression: "true", // enabled by default
|
Expression: "true", // enabled by default
|
||||||
Owner: grafanaDashboardsSquad,
|
Owner: grafanaDashboardsSquad,
|
||||||
@ -282,26 +282,26 @@ var (
|
|||||||
{
|
{
|
||||||
Name: "disablePrometheusExemplarSampling",
|
Name: "disablePrometheusExemplarSampling",
|
||||||
Description: "Disable Prometheus exemplar sampling",
|
Description: "Disable Prometheus exemplar sampling",
|
||||||
State: FeatureStateStable,
|
Stage: FeatureStageGeneralAvailability,
|
||||||
Owner: grafanaObservabilityMetricsSquad,
|
Owner: grafanaObservabilityMetricsSquad,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "alertingBacktesting",
|
Name: "alertingBacktesting",
|
||||||
Description: "Rule backtesting API for alerting",
|
Description: "Rule backtesting API for alerting",
|
||||||
State: FeatureStateAlpha,
|
Stage: FeatureStageExperimental,
|
||||||
Owner: grafanaAlertingSquad,
|
Owner: grafanaAlertingSquad,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "editPanelCSVDragAndDrop",
|
Name: "editPanelCSVDragAndDrop",
|
||||||
Description: "Enables drag and drop for CSV and Excel files",
|
Description: "Enables drag and drop for CSV and Excel files",
|
||||||
FrontendOnly: true,
|
FrontendOnly: true,
|
||||||
State: FeatureStateAlpha,
|
Stage: FeatureStageExperimental,
|
||||||
Owner: grafanaBiSquad,
|
Owner: grafanaBiSquad,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "alertingNoNormalState",
|
Name: "alertingNoNormalState",
|
||||||
Description: "Stop maintaining state of alerts that are not firing",
|
Description: "Stop maintaining state of alerts that are not firing",
|
||||||
State: FeatureStateBeta,
|
Stage: FeatureStagePublicPreview,
|
||||||
RequiresRestart: false,
|
RequiresRestart: false,
|
||||||
Owner: grafanaAlertingSquad,
|
Owner: grafanaAlertingSquad,
|
||||||
},
|
},
|
||||||
@ -309,7 +309,7 @@ var (
|
|||||||
|
|
||||||
Name: "logsSampleInExplore",
|
Name: "logsSampleInExplore",
|
||||||
Description: "Enables access to the logs sample feature in Explore",
|
Description: "Enables access to the logs sample feature in Explore",
|
||||||
State: FeatureStateStable,
|
Stage: FeatureStageGeneralAvailability,
|
||||||
Expression: "true", // turned on by default
|
Expression: "true", // turned on by default
|
||||||
FrontendOnly: true,
|
FrontendOnly: true,
|
||||||
Owner: grafanaObservabilityLogsSquad,
|
Owner: grafanaObservabilityLogsSquad,
|
||||||
@ -317,7 +317,7 @@ var (
|
|||||||
{
|
{
|
||||||
Name: "logsContextDatasourceUi",
|
Name: "logsContextDatasourceUi",
|
||||||
Description: "Allow datasource to provide custom UI for context view",
|
Description: "Allow datasource to provide custom UI for context view",
|
||||||
State: FeatureStateStable,
|
Stage: FeatureStageGeneralAvailability,
|
||||||
FrontendOnly: true,
|
FrontendOnly: true,
|
||||||
Owner: grafanaObservabilityLogsSquad,
|
Owner: grafanaObservabilityLogsSquad,
|
||||||
Expression: "true", // turned on by default
|
Expression: "true", // turned on by default
|
||||||
@ -325,88 +325,88 @@ var (
|
|||||||
{
|
{
|
||||||
Name: "lokiQuerySplitting",
|
Name: "lokiQuerySplitting",
|
||||||
Description: "Split large interval queries into subqueries with smaller time intervals",
|
Description: "Split large interval queries into subqueries with smaller time intervals",
|
||||||
State: FeatureStateAlpha,
|
Stage: FeatureStageExperimental,
|
||||||
FrontendOnly: true,
|
FrontendOnly: true,
|
||||||
Owner: grafanaObservabilityLogsSquad,
|
Owner: grafanaObservabilityLogsSquad,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "lokiQuerySplittingConfig",
|
Name: "lokiQuerySplittingConfig",
|
||||||
Description: "Give users the option to configure split durations for Loki queries",
|
Description: "Give users the option to configure split durations for Loki queries",
|
||||||
State: FeatureStateAlpha,
|
Stage: FeatureStageExperimental,
|
||||||
FrontendOnly: true,
|
FrontendOnly: true,
|
||||||
Owner: grafanaObservabilityLogsSquad,
|
Owner: grafanaObservabilityLogsSquad,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "individualCookiePreferences",
|
Name: "individualCookiePreferences",
|
||||||
Description: "Support overriding cookie preferences per user",
|
Description: "Support overriding cookie preferences per user",
|
||||||
State: FeatureStateAlpha,
|
Stage: FeatureStageExperimental,
|
||||||
Owner: grafanaBackendPlatformSquad,
|
Owner: grafanaBackendPlatformSquad,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "onlyExternalOrgRoleSync",
|
Name: "onlyExternalOrgRoleSync",
|
||||||
Description: "Prohibits a user from changing organization roles synced with external auth providers",
|
Description: "Prohibits a user from changing organization roles synced with external auth providers",
|
||||||
State: FeatureStateAlpha,
|
Stage: FeatureStageExperimental,
|
||||||
Owner: grafanaAuthnzSquad,
|
Owner: grafanaAuthnzSquad,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "traceqlSearch",
|
Name: "traceqlSearch",
|
||||||
Description: "Enables the 'TraceQL Search' tab for the Tempo datasource which provides a UI to generate TraceQL queries",
|
Description: "Enables the 'TraceQL Search' tab for the Tempo datasource which provides a UI to generate TraceQL queries",
|
||||||
State: FeatureStateAlpha,
|
Stage: FeatureStageExperimental,
|
||||||
FrontendOnly: true,
|
FrontendOnly: true,
|
||||||
Owner: grafanaObservabilityTracesAndProfilingSquad,
|
Owner: grafanaObservabilityTracesAndProfilingSquad,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "prometheusMetricEncyclopedia",
|
Name: "prometheusMetricEncyclopedia",
|
||||||
Description: "Replaces the Prometheus query builder metric select option with a paginated and filterable component",
|
Description: "Replaces the Prometheus query builder metric select option with a paginated and filterable component",
|
||||||
State: FeatureStateAlpha,
|
Stage: FeatureStageExperimental,
|
||||||
FrontendOnly: true,
|
FrontendOnly: true,
|
||||||
Owner: grafanaObservabilityMetricsSquad,
|
Owner: grafanaObservabilityMetricsSquad,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "timeSeriesTable",
|
Name: "timeSeriesTable",
|
||||||
Description: "Enable time series table transformer & sparkline cell type",
|
Description: "Enable time series table transformer & sparkline cell type",
|
||||||
State: FeatureStateAlpha,
|
Stage: FeatureStageExperimental,
|
||||||
FrontendOnly: true,
|
FrontendOnly: true,
|
||||||
Owner: appO11ySquad,
|
Owner: appO11ySquad,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "prometheusResourceBrowserCache",
|
Name: "prometheusResourceBrowserCache",
|
||||||
Description: "Displays browser caching options in Prometheus data source configuration",
|
Description: "Displays browser caching options in Prometheus data source configuration",
|
||||||
State: FeatureStateAlpha,
|
Stage: FeatureStageExperimental,
|
||||||
FrontendOnly: true,
|
FrontendOnly: true,
|
||||||
Owner: grafanaObservabilityMetricsSquad,
|
Owner: grafanaObservabilityMetricsSquad,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "influxdbBackendMigration",
|
Name: "influxdbBackendMigration",
|
||||||
Description: "Query InfluxDB InfluxQL without the proxy",
|
Description: "Query InfluxDB InfluxQL without the proxy",
|
||||||
State: FeatureStateAlpha,
|
Stage: FeatureStageExperimental,
|
||||||
FrontendOnly: true,
|
FrontendOnly: true,
|
||||||
Owner: grafanaObservabilityMetricsSquad,
|
Owner: grafanaObservabilityMetricsSquad,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "clientTokenRotation",
|
Name: "clientTokenRotation",
|
||||||
Description: "Replaces the current in-request token rotation so that the client initiates the rotation",
|
Description: "Replaces the current in-request token rotation so that the client initiates the rotation",
|
||||||
State: FeatureStateAlpha,
|
Stage: FeatureStageExperimental,
|
||||||
Owner: grafanaAuthnzSquad,
|
Owner: grafanaAuthnzSquad,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "prometheusDataplane",
|
Name: "prometheusDataplane",
|
||||||
Description: "Changes responses to from Prometheus to be compliant with the dataplane specification. In particular it sets the numeric Field.Name from 'Value' to the value of the `__name__` label when present.",
|
Description: "Changes responses to from Prometheus to be compliant with the dataplane specification. In particular it sets the numeric Field.Name from 'Value' to the value of the `__name__` label when present.",
|
||||||
Expression: "true",
|
Expression: "true",
|
||||||
State: FeatureStateStable,
|
Stage: FeatureStageGeneralAvailability,
|
||||||
Owner: grafanaObservabilityMetricsSquad,
|
Owner: grafanaObservabilityMetricsSquad,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "lokiMetricDataplane",
|
Name: "lokiMetricDataplane",
|
||||||
Description: "Changes metric responses from Loki to be compliant with the dataplane specification.",
|
Description: "Changes metric responses from Loki to be compliant with the dataplane specification.",
|
||||||
State: FeatureStateStable,
|
Stage: FeatureStageGeneralAvailability,
|
||||||
Expression: "true",
|
Expression: "true",
|
||||||
Owner: grafanaObservabilityLogsSquad,
|
Owner: grafanaObservabilityLogsSquad,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "dataplaneFrontendFallback",
|
Name: "dataplaneFrontendFallback",
|
||||||
Description: "Support dataplane contract field name change for transformations and field name matchers where the name is different",
|
Description: "Support dataplane contract field name change for transformations and field name matchers where the name is different",
|
||||||
State: FeatureStateStable,
|
Stage: FeatureStageGeneralAvailability,
|
||||||
FrontendOnly: true,
|
FrontendOnly: true,
|
||||||
Expression: "true",
|
Expression: "true",
|
||||||
Owner: grafanaObservabilityMetricsSquad,
|
Owner: grafanaObservabilityMetricsSquad,
|
||||||
@ -414,19 +414,19 @@ var (
|
|||||||
{
|
{
|
||||||
Name: "disableSSEDataplane",
|
Name: "disableSSEDataplane",
|
||||||
Description: "Disables dataplane specific processing in server side expressions.",
|
Description: "Disables dataplane specific processing in server side expressions.",
|
||||||
State: FeatureStateAlpha,
|
Stage: FeatureStageExperimental,
|
||||||
Owner: grafanaObservabilityMetricsSquad,
|
Owner: grafanaObservabilityMetricsSquad,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "alertStateHistoryLokiSecondary",
|
Name: "alertStateHistoryLokiSecondary",
|
||||||
Description: "Enable Grafana to write alert state history to an external Loki instance in addition to Grafana annotations.",
|
Description: "Enable Grafana to write alert state history to an external Loki instance in addition to Grafana annotations.",
|
||||||
State: FeatureStateAlpha,
|
Stage: FeatureStageExperimental,
|
||||||
Owner: grafanaAlertingSquad,
|
Owner: grafanaAlertingSquad,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "alertingNotificationsPoliciesMatchingInstances",
|
Name: "alertingNotificationsPoliciesMatchingInstances",
|
||||||
Description: "Enables the preview of matching instances for notification policies",
|
Description: "Enables the preview of matching instances for notification policies",
|
||||||
State: FeatureStateStable,
|
Stage: FeatureStageGeneralAvailability,
|
||||||
FrontendOnly: true,
|
FrontendOnly: true,
|
||||||
Expression: "true", // enabled by default
|
Expression: "true", // enabled by default
|
||||||
Owner: grafanaAlertingSquad,
|
Owner: grafanaAlertingSquad,
|
||||||
@ -434,76 +434,76 @@ var (
|
|||||||
{
|
{
|
||||||
Name: "alertStateHistoryLokiPrimary",
|
Name: "alertStateHistoryLokiPrimary",
|
||||||
Description: "Enable a remote Loki instance as the primary source for state history reads.",
|
Description: "Enable a remote Loki instance as the primary source for state history reads.",
|
||||||
State: FeatureStateAlpha,
|
Stage: FeatureStageExperimental,
|
||||||
Owner: grafanaAlertingSquad,
|
Owner: grafanaAlertingSquad,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "alertStateHistoryLokiOnly",
|
Name: "alertStateHistoryLokiOnly",
|
||||||
Description: "Disable Grafana alerts from emitting annotations when a remote Loki instance is available.",
|
Description: "Disable Grafana alerts from emitting annotations when a remote Loki instance is available.",
|
||||||
State: FeatureStateAlpha,
|
Stage: FeatureStageExperimental,
|
||||||
Owner: grafanaAlertingSquad,
|
Owner: grafanaAlertingSquad,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "unifiedRequestLog",
|
Name: "unifiedRequestLog",
|
||||||
Description: "Writes error logs to the request logger",
|
Description: "Writes error logs to the request logger",
|
||||||
State: FeatureStateAlpha,
|
Stage: FeatureStageExperimental,
|
||||||
Owner: grafanaBackendPlatformSquad,
|
Owner: grafanaBackendPlatformSquad,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "renderAuthJWT",
|
Name: "renderAuthJWT",
|
||||||
Description: "Uses JWT-based auth for rendering instead of relying on remote cache",
|
Description: "Uses JWT-based auth for rendering instead of relying on remote cache",
|
||||||
State: FeatureStateBeta,
|
Stage: FeatureStagePublicPreview,
|
||||||
Owner: grafanaAsCodeSquad,
|
Owner: grafanaAsCodeSquad,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "pyroscopeFlameGraph",
|
Name: "pyroscopeFlameGraph",
|
||||||
Description: "Changes flame graph to pyroscope one",
|
Description: "Changes flame graph to pyroscope one",
|
||||||
State: FeatureStateAlpha,
|
Stage: FeatureStageExperimental,
|
||||||
Owner: grafanaObservabilityTracesAndProfilingSquad,
|
Owner: grafanaObservabilityTracesAndProfilingSquad,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "externalServiceAuth",
|
Name: "externalServiceAuth",
|
||||||
Description: "Starts an OAuth2 authentication provider for external services",
|
Description: "Starts an OAuth2 authentication provider for external services",
|
||||||
State: FeatureStateAlpha,
|
Stage: FeatureStageExperimental,
|
||||||
RequiresDevMode: true,
|
RequiresDevMode: true,
|
||||||
Owner: grafanaAuthnzSquad,
|
Owner: grafanaAuthnzSquad,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "refactorVariablesTimeRange",
|
Name: "refactorVariablesTimeRange",
|
||||||
Description: "Refactor time range variables flow to reduce number of API calls made when query variables are chained",
|
Description: "Refactor time range variables flow to reduce number of API calls made when query variables are chained",
|
||||||
State: FeatureStateBeta,
|
Stage: FeatureStagePublicPreview,
|
||||||
Owner: grafanaDashboardsSquad,
|
Owner: grafanaDashboardsSquad,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "useCachingService",
|
Name: "useCachingService",
|
||||||
Description: "When turned on, the new query and resource caching implementation using a wire service inject will be used in place of the previous middleware implementation",
|
Description: "When turned on, the new query and resource caching implementation using a wire service inject will be used in place of the previous middleware implementation",
|
||||||
State: FeatureStateStable,
|
Stage: FeatureStageGeneralAvailability,
|
||||||
Owner: grafanaOperatorExperienceSquad,
|
Owner: grafanaOperatorExperienceSquad,
|
||||||
RequiresRestart: true,
|
RequiresRestart: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "enableElasticsearchBackendQuerying",
|
Name: "enableElasticsearchBackendQuerying",
|
||||||
Description: "Enable the processing of queries and responses in the Elasticsearch data source through backend",
|
Description: "Enable the processing of queries and responses in the Elasticsearch data source through backend",
|
||||||
State: FeatureStateBeta,
|
Stage: FeatureStagePublicPreview,
|
||||||
Owner: grafanaObservabilityLogsSquad,
|
Owner: grafanaObservabilityLogsSquad,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "authenticationConfigUI",
|
Name: "authenticationConfigUI",
|
||||||
Description: "Enables authentication configuration UI",
|
Description: "Enables authentication configuration UI",
|
||||||
State: FeatureStateStable,
|
Stage: FeatureStageGeneralAvailability,
|
||||||
Expression: "true",
|
Expression: "true",
|
||||||
Owner: grafanaAuthnzSquad,
|
Owner: grafanaAuthnzSquad,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "pluginsAPIManifestKey",
|
Name: "pluginsAPIManifestKey",
|
||||||
Description: "Use grafana.com API to retrieve the public manifest key",
|
Description: "Use grafana.com API to retrieve the public manifest key",
|
||||||
State: FeatureStateAlpha,
|
Stage: FeatureStageExperimental,
|
||||||
Owner: grafanaPluginsPlatformSquad,
|
Owner: grafanaPluginsPlatformSquad,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "advancedDataSourcePicker",
|
Name: "advancedDataSourcePicker",
|
||||||
Description: "Enable a new data source picker with contextual information, recently used order and advanced mode",
|
Description: "Enable a new data source picker with contextual information, recently used order and advanced mode",
|
||||||
State: FeatureStateStable,
|
Stage: FeatureStageGeneralAvailability,
|
||||||
FrontendOnly: true,
|
FrontendOnly: true,
|
||||||
Expression: "true", // enabled by default
|
Expression: "true", // enabled by default
|
||||||
Owner: grafanaDashboardsSquad,
|
Owner: grafanaDashboardsSquad,
|
||||||
@ -511,7 +511,7 @@ var (
|
|||||||
{
|
{
|
||||||
Name: "faroDatasourceSelector",
|
Name: "faroDatasourceSelector",
|
||||||
Description: "Enable the data source selector within the Frontend Apps section of the Frontend Observability",
|
Description: "Enable the data source selector within the Frontend Apps section of the Frontend Observability",
|
||||||
State: FeatureStateBeta,
|
Stage: FeatureStagePublicPreview,
|
||||||
FrontendOnly: true,
|
FrontendOnly: true,
|
||||||
Owner: appO11ySquad,
|
Owner: appO11ySquad,
|
||||||
},
|
},
|
||||||
@ -519,34 +519,34 @@ var (
|
|||||||
Name: "enableDatagridEditing",
|
Name: "enableDatagridEditing",
|
||||||
Description: "Enables the edit functionality in the datagrid panel",
|
Description: "Enables the edit functionality in the datagrid panel",
|
||||||
FrontendOnly: true,
|
FrontendOnly: true,
|
||||||
State: FeatureStateBeta,
|
Stage: FeatureStagePublicPreview,
|
||||||
Owner: grafanaBiSquad,
|
Owner: grafanaBiSquad,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "dataSourcePageHeader",
|
Name: "dataSourcePageHeader",
|
||||||
Description: "Apply new pageHeader UI in data source edit page",
|
Description: "Apply new pageHeader UI in data source edit page",
|
||||||
FrontendOnly: true,
|
FrontendOnly: true,
|
||||||
State: FeatureStateBeta,
|
Stage: FeatureStagePublicPreview,
|
||||||
Owner: enterpriseDatasourcesSquad,
|
Owner: enterpriseDatasourcesSquad,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "extraThemes",
|
Name: "extraThemes",
|
||||||
Description: "Enables extra themes",
|
Description: "Enables extra themes",
|
||||||
FrontendOnly: true,
|
FrontendOnly: true,
|
||||||
State: FeatureStateAlpha,
|
Stage: FeatureStageExperimental,
|
||||||
Owner: grafanaFrontendPlatformSquad,
|
Owner: grafanaFrontendPlatformSquad,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "lokiPredefinedOperations",
|
Name: "lokiPredefinedOperations",
|
||||||
Description: "Adds predefined query operations to Loki query editor",
|
Description: "Adds predefined query operations to Loki query editor",
|
||||||
FrontendOnly: true,
|
FrontendOnly: true,
|
||||||
State: FeatureStateAlpha,
|
Stage: FeatureStageExperimental,
|
||||||
Owner: grafanaObservabilityLogsSquad,
|
Owner: grafanaObservabilityLogsSquad,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "pluginsFrontendSandbox",
|
Name: "pluginsFrontendSandbox",
|
||||||
Description: "Enables the plugins frontend sandbox",
|
Description: "Enables the plugins frontend sandbox",
|
||||||
State: FeatureStateAlpha,
|
Stage: FeatureStageExperimental,
|
||||||
FrontendOnly: true,
|
FrontendOnly: true,
|
||||||
Owner: grafanaPluginsPlatformSquad,
|
Owner: grafanaPluginsPlatformSquad,
|
||||||
},
|
},
|
||||||
@ -554,7 +554,7 @@ var (
|
|||||||
Name: "sqlDatasourceDatabaseSelection",
|
Name: "sqlDatasourceDatabaseSelection",
|
||||||
Description: "Enables previous SQL data source dataset dropdown behavior",
|
Description: "Enables previous SQL data source dataset dropdown behavior",
|
||||||
FrontendOnly: true,
|
FrontendOnly: true,
|
||||||
State: FeatureStateBeta,
|
Stage: FeatureStagePublicPreview,
|
||||||
Owner: grafanaBiSquad,
|
Owner: grafanaBiSquad,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
@ -49,7 +49,7 @@ func ProvideManagerService(cfg *setting.Cfg, licensing licensing.Licensing) (*Fe
|
|||||||
default:
|
default:
|
||||||
flag = &FeatureFlag{
|
flag = &FeatureFlag{
|
||||||
Name: key,
|
Name: key,
|
||||||
State: FeatureStateUnknown,
|
Stage: FeatureStageUnknown,
|
||||||
}
|
}
|
||||||
mgmt.flags[key] = flag
|
mgmt.flags[key] = flag
|
||||||
}
|
}
|
||||||
|
@ -1,83 +1,83 @@
|
|||||||
Name,State,Owner,requiresDevMode,RequiresLicense,RequiresRestart,FrontendOnly
|
Name,Stage,Owner,requiresDevMode,RequiresLicense,RequiresRestart,FrontendOnly
|
||||||
trimDefaults,beta,@grafana/grafana-as-code,false,false,false,false
|
trimDefaults,preview,@grafana/grafana-as-code,false,false,false,false
|
||||||
disableEnvelopeEncryption,stable,@grafana/grafana-as-code,false,false,false,false
|
disableEnvelopeEncryption,GA,@grafana/grafana-as-code,false,false,false,false
|
||||||
live-service-web-worker,alpha,@grafana/grafana-app-platform-squad,false,false,false,true
|
live-service-web-worker,experimental,@grafana/grafana-app-platform-squad,false,false,false,true
|
||||||
queryOverLive,alpha,@grafana/grafana-app-platform-squad,false,false,false,true
|
queryOverLive,experimental,@grafana/grafana-app-platform-squad,false,false,false,true
|
||||||
panelTitleSearch,beta,@grafana/grafana-app-platform-squad,false,false,false,false
|
panelTitleSearch,preview,@grafana/grafana-app-platform-squad,false,false,false,false
|
||||||
prometheusAzureOverrideAudience,beta,@grafana/observability-metrics,false,false,false,false
|
prometheusAzureOverrideAudience,preview,@grafana/observability-metrics,false,false,false,false
|
||||||
publicDashboards,beta,@grafana/dashboards-squad,false,false,false,false
|
publicDashboards,preview,@grafana/dashboards-squad,false,false,false,false
|
||||||
publicDashboardsEmailSharing,beta,@grafana/dashboards-squad,false,true,false,false
|
publicDashboardsEmailSharing,preview,@grafana/dashboards-squad,false,true,false,false
|
||||||
lokiLive,alpha,@grafana/observability-logs,false,false,false,false
|
lokiLive,experimental,@grafana/observability-logs,false,false,false,false
|
||||||
featureHighlights,stable,@grafana/grafana-as-code,false,false,false,false
|
featureHighlights,GA,@grafana/grafana-as-code,false,false,false,false
|
||||||
migrationLocking,beta,@grafana/backend-platform,false,false,false,false
|
migrationLocking,preview,@grafana/backend-platform,false,false,false,false
|
||||||
storage,alpha,@grafana/grafana-app-platform-squad,false,false,false,false
|
storage,experimental,@grafana/grafana-app-platform-squad,false,false,false,false
|
||||||
exploreMixedDatasource,stable,@grafana/explore-squad,false,false,false,true
|
exploreMixedDatasource,GA,@grafana/explore-squad,false,false,false,true
|
||||||
newTraceViewHeader,alpha,@grafana/observability-traces-and-profiling,false,false,false,true
|
newTraceViewHeader,experimental,@grafana/observability-traces-and-profiling,false,false,false,true
|
||||||
correlations,beta,@grafana/explore-squad,false,false,false,false
|
correlations,preview,@grafana/explore-squad,false,false,false,false
|
||||||
datasourceQueryMultiStatus,alpha,@grafana/plugins-platform-backend,false,false,false,false
|
datasourceQueryMultiStatus,experimental,@grafana/plugins-platform-backend,false,false,false,false
|
||||||
traceToMetrics,alpha,@grafana/observability-traces-and-profiling,false,false,false,true
|
traceToMetrics,experimental,@grafana/observability-traces-and-profiling,false,false,false,true
|
||||||
newDBLibrary,beta,@grafana/backend-platform,false,false,false,false
|
newDBLibrary,preview,@grafana/backend-platform,false,false,false,false
|
||||||
validateDashboardsOnSave,beta,@grafana/grafana-as-code,false,false,true,false
|
validateDashboardsOnSave,preview,@grafana/grafana-as-code,false,false,true,false
|
||||||
autoMigrateOldPanels,beta,@grafana/dataviz-squad,false,false,false,true
|
autoMigrateOldPanels,preview,@grafana/dataviz-squad,false,false,false,true
|
||||||
disableAngular,beta,@grafana/dataviz-squad,false,false,false,true
|
disableAngular,preview,@grafana/dataviz-squad,false,false,false,true
|
||||||
prometheusWideSeries,alpha,@grafana/observability-metrics,false,false,false,false
|
prometheusWideSeries,experimental,@grafana/observability-metrics,false,false,false,false
|
||||||
canvasPanelNesting,alpha,@grafana/dataviz-squad,false,false,false,true
|
canvasPanelNesting,experimental,@grafana/dataviz-squad,false,false,false,true
|
||||||
scenes,alpha,@grafana/dashboards-squad,false,false,false,true
|
scenes,experimental,@grafana/dashboards-squad,false,false,false,true
|
||||||
disableSecretsCompatibility,alpha,@grafana/hosted-grafana-team,false,false,true,false
|
disableSecretsCompatibility,experimental,@grafana/hosted-grafana-team,false,false,true,false
|
||||||
logRequestsInstrumentedAsUnknown,alpha,@grafana/hosted-grafana-team,false,false,false,false
|
logRequestsInstrumentedAsUnknown,experimental,@grafana/hosted-grafana-team,false,false,false,false
|
||||||
dataConnectionsConsole,stable,@grafana/plugins-platform-backend,false,false,false,false
|
dataConnectionsConsole,GA,@grafana/plugins-platform-backend,false,false,false,false
|
||||||
topnav,stable,@grafana/grafana-frontend-platform,false,false,false,false
|
topnav,GA,@grafana/grafana-frontend-platform,false,false,false,false
|
||||||
grpcServer,beta,@grafana/grafana-app-platform-squad,false,false,false,false
|
grpcServer,preview,@grafana/grafana-app-platform-squad,false,false,false,false
|
||||||
entityStore,alpha,@grafana/grafana-app-platform-squad,true,false,false,false
|
entityStore,experimental,@grafana/grafana-app-platform-squad,true,false,false,false
|
||||||
cloudWatchCrossAccountQuerying,stable,@grafana/aws-plugins,false,false,false,false
|
cloudWatchCrossAccountQuerying,GA,@grafana/aws-plugins,false,false,false,false
|
||||||
redshiftAsyncQueryDataSupport,alpha,@grafana/aws-plugins,false,false,false,true
|
redshiftAsyncQueryDataSupport,experimental,@grafana/aws-plugins,false,false,false,true
|
||||||
athenaAsyncQueryDataSupport,alpha,@grafana/aws-plugins,false,false,false,true
|
athenaAsyncQueryDataSupport,experimental,@grafana/aws-plugins,false,false,false,true
|
||||||
newPanelChromeUI,stable,@grafana/dashboards-squad,false,false,false,true
|
newPanelChromeUI,GA,@grafana/dashboards-squad,false,false,false,true
|
||||||
showDashboardValidationWarnings,alpha,@grafana/dashboards-squad,false,false,false,false
|
showDashboardValidationWarnings,experimental,@grafana/dashboards-squad,false,false,false,false
|
||||||
mysqlAnsiQuotes,alpha,@grafana/backend-platform,false,false,false,false
|
mysqlAnsiQuotes,experimental,@grafana/backend-platform,false,false,false,false
|
||||||
accessControlOnCall,beta,@grafana/grafana-authnz-team,false,false,false,false
|
accessControlOnCall,preview,@grafana/grafana-authnz-team,false,false,false,false
|
||||||
nestedFolders,beta,@grafana/backend-platform,false,false,false,false
|
nestedFolders,preview,@grafana/backend-platform,false,false,false,false
|
||||||
accessTokenExpirationCheck,stable,@grafana/grafana-authnz-team,false,false,false,false
|
accessTokenExpirationCheck,GA,@grafana/grafana-authnz-team,false,false,false,false
|
||||||
showTraceId,alpha,@grafana/observability-logs,false,false,false,false
|
showTraceId,experimental,@grafana/observability-logs,false,false,false,false
|
||||||
emptyDashboardPage,stable,@grafana/dashboards-squad,false,false,false,true
|
emptyDashboardPage,GA,@grafana/dashboards-squad,false,false,false,true
|
||||||
disablePrometheusExemplarSampling,stable,@grafana/observability-metrics,false,false,false,false
|
disablePrometheusExemplarSampling,GA,@grafana/observability-metrics,false,false,false,false
|
||||||
alertingBacktesting,alpha,@grafana/alerting-squad,false,false,false,false
|
alertingBacktesting,experimental,@grafana/alerting-squad,false,false,false,false
|
||||||
editPanelCSVDragAndDrop,alpha,@grafana/grafana-bi-squad,false,false,false,true
|
editPanelCSVDragAndDrop,experimental,@grafana/grafana-bi-squad,false,false,false,true
|
||||||
alertingNoNormalState,beta,@grafana/alerting-squad,false,false,false,false
|
alertingNoNormalState,preview,@grafana/alerting-squad,false,false,false,false
|
||||||
logsSampleInExplore,stable,@grafana/observability-logs,false,false,false,true
|
logsSampleInExplore,GA,@grafana/observability-logs,false,false,false,true
|
||||||
logsContextDatasourceUi,stable,@grafana/observability-logs,false,false,false,true
|
logsContextDatasourceUi,GA,@grafana/observability-logs,false,false,false,true
|
||||||
lokiQuerySplitting,alpha,@grafana/observability-logs,false,false,false,true
|
lokiQuerySplitting,experimental,@grafana/observability-logs,false,false,false,true
|
||||||
lokiQuerySplittingConfig,alpha,@grafana/observability-logs,false,false,false,true
|
lokiQuerySplittingConfig,experimental,@grafana/observability-logs,false,false,false,true
|
||||||
individualCookiePreferences,alpha,@grafana/backend-platform,false,false,false,false
|
individualCookiePreferences,experimental,@grafana/backend-platform,false,false,false,false
|
||||||
onlyExternalOrgRoleSync,alpha,@grafana/grafana-authnz-team,false,false,false,false
|
onlyExternalOrgRoleSync,experimental,@grafana/grafana-authnz-team,false,false,false,false
|
||||||
traceqlSearch,alpha,@grafana/observability-traces-and-profiling,false,false,false,true
|
traceqlSearch,experimental,@grafana/observability-traces-and-profiling,false,false,false,true
|
||||||
prometheusMetricEncyclopedia,alpha,@grafana/observability-metrics,false,false,false,true
|
prometheusMetricEncyclopedia,experimental,@grafana/observability-metrics,false,false,false,true
|
||||||
timeSeriesTable,alpha,@grafana/app-o11y,false,false,false,true
|
timeSeriesTable,experimental,@grafana/app-o11y,false,false,false,true
|
||||||
prometheusResourceBrowserCache,alpha,@grafana/observability-metrics,false,false,false,true
|
prometheusResourceBrowserCache,experimental,@grafana/observability-metrics,false,false,false,true
|
||||||
influxdbBackendMigration,alpha,@grafana/observability-metrics,false,false,false,true
|
influxdbBackendMigration,experimental,@grafana/observability-metrics,false,false,false,true
|
||||||
clientTokenRotation,alpha,@grafana/grafana-authnz-team,false,false,false,false
|
clientTokenRotation,experimental,@grafana/grafana-authnz-team,false,false,false,false
|
||||||
prometheusDataplane,stable,@grafana/observability-metrics,false,false,false,false
|
prometheusDataplane,GA,@grafana/observability-metrics,false,false,false,false
|
||||||
lokiMetricDataplane,stable,@grafana/observability-logs,false,false,false,false
|
lokiMetricDataplane,GA,@grafana/observability-logs,false,false,false,false
|
||||||
dataplaneFrontendFallback,stable,@grafana/observability-metrics,false,false,false,true
|
dataplaneFrontendFallback,GA,@grafana/observability-metrics,false,false,false,true
|
||||||
disableSSEDataplane,alpha,@grafana/observability-metrics,false,false,false,false
|
disableSSEDataplane,experimental,@grafana/observability-metrics,false,false,false,false
|
||||||
alertStateHistoryLokiSecondary,alpha,@grafana/alerting-squad,false,false,false,false
|
alertStateHistoryLokiSecondary,experimental,@grafana/alerting-squad,false,false,false,false
|
||||||
alertingNotificationsPoliciesMatchingInstances,stable,@grafana/alerting-squad,false,false,false,true
|
alertingNotificationsPoliciesMatchingInstances,GA,@grafana/alerting-squad,false,false,false,true
|
||||||
alertStateHistoryLokiPrimary,alpha,@grafana/alerting-squad,false,false,false,false
|
alertStateHistoryLokiPrimary,experimental,@grafana/alerting-squad,false,false,false,false
|
||||||
alertStateHistoryLokiOnly,alpha,@grafana/alerting-squad,false,false,false,false
|
alertStateHistoryLokiOnly,experimental,@grafana/alerting-squad,false,false,false,false
|
||||||
unifiedRequestLog,alpha,@grafana/backend-platform,false,false,false,false
|
unifiedRequestLog,experimental,@grafana/backend-platform,false,false,false,false
|
||||||
renderAuthJWT,beta,@grafana/grafana-as-code,false,false,false,false
|
renderAuthJWT,preview,@grafana/grafana-as-code,false,false,false,false
|
||||||
pyroscopeFlameGraph,alpha,@grafana/observability-traces-and-profiling,false,false,false,false
|
pyroscopeFlameGraph,experimental,@grafana/observability-traces-and-profiling,false,false,false,false
|
||||||
externalServiceAuth,alpha,@grafana/grafana-authnz-team,true,false,false,false
|
externalServiceAuth,experimental,@grafana/grafana-authnz-team,true,false,false,false
|
||||||
refactorVariablesTimeRange,beta,@grafana/dashboards-squad,false,false,false,false
|
refactorVariablesTimeRange,preview,@grafana/dashboards-squad,false,false,false,false
|
||||||
useCachingService,stable,@grafana/grafana-operator-experience-squad,false,false,true,false
|
useCachingService,GA,@grafana/grafana-operator-experience-squad,false,false,true,false
|
||||||
enableElasticsearchBackendQuerying,beta,@grafana/observability-logs,false,false,false,false
|
enableElasticsearchBackendQuerying,preview,@grafana/observability-logs,false,false,false,false
|
||||||
authenticationConfigUI,stable,@grafana/grafana-authnz-team,false,false,false,false
|
authenticationConfigUI,GA,@grafana/grafana-authnz-team,false,false,false,false
|
||||||
pluginsAPIManifestKey,alpha,@grafana/plugins-platform-backend,false,false,false,false
|
pluginsAPIManifestKey,experimental,@grafana/plugins-platform-backend,false,false,false,false
|
||||||
advancedDataSourcePicker,stable,@grafana/dashboards-squad,false,false,false,true
|
advancedDataSourcePicker,GA,@grafana/dashboards-squad,false,false,false,true
|
||||||
faroDatasourceSelector,beta,@grafana/app-o11y,false,false,false,true
|
faroDatasourceSelector,preview,@grafana/app-o11y,false,false,false,true
|
||||||
enableDatagridEditing,beta,@grafana/grafana-bi-squad,false,false,false,true
|
enableDatagridEditing,preview,@grafana/grafana-bi-squad,false,false,false,true
|
||||||
dataSourcePageHeader,beta,@grafana/enterprise-datasources,false,false,false,true
|
dataSourcePageHeader,preview,@grafana/enterprise-datasources,false,false,false,true
|
||||||
extraThemes,alpha,@grafana/grafana-frontend-platform,false,false,false,true
|
extraThemes,experimental,@grafana/grafana-frontend-platform,false,false,false,true
|
||||||
lokiPredefinedOperations,alpha,@grafana/observability-logs,false,false,false,true
|
lokiPredefinedOperations,experimental,@grafana/observability-logs,false,false,false,true
|
||||||
pluginsFrontendSandbox,alpha,@grafana/plugins-platform-backend,false,false,false,true
|
pluginsFrontendSandbox,experimental,@grafana/plugins-platform-backend,false,false,false,true
|
||||||
sqlDatasourceDatabaseSelection,beta,@grafana/grafana-bi-squad,false,false,false,true
|
sqlDatasourceDatabaseSelection,preview,@grafana/grafana-bi-squad,false,false,false,true
|
||||||
|
|
@ -30,13 +30,13 @@ func TestFeatureToggleFiles(t *testing.T) {
|
|||||||
|
|
||||||
t.Run("check registry constraints", func(t *testing.T) {
|
t.Run("check registry constraints", func(t *testing.T) {
|
||||||
for _, flag := range standardFeatureFlags {
|
for _, flag := range standardFeatureFlags {
|
||||||
if flag.Expression == "true" && flag.State != FeatureStateStable {
|
if flag.Expression == "true" && flag.Stage != FeatureStageGeneralAvailability {
|
||||||
t.Errorf("only stable features can be enabled by default. See: %s", flag.Name)
|
t.Errorf("only stable features can be enabled by default. See: %s", flag.Name)
|
||||||
}
|
}
|
||||||
if flag.RequiresDevMode && flag.State != FeatureStateAlpha {
|
if flag.RequiresDevMode && flag.Stage != FeatureStageExperimental {
|
||||||
t.Errorf("only alpha features can require dev mode. See: %s", flag.Name)
|
t.Errorf("only alpha features can require dev mode. See: %s", flag.Name)
|
||||||
}
|
}
|
||||||
if flag.State == FeatureStateUnknown {
|
if flag.Stage == FeatureStageUnknown {
|
||||||
t.Errorf("standard toggles should not have an unknown state. See: %s", flag.Name)
|
t.Errorf("standard toggles should not have an unknown state. See: %s", flag.Name)
|
||||||
}
|
}
|
||||||
if flag.Description != strings.TrimSpace(flag.Description) {
|
if flag.Description != strings.TrimSpace(flag.Description) {
|
||||||
@ -210,8 +210,8 @@ func generateCSV() string {
|
|||||||
w := csv.NewWriter(&buf)
|
w := csv.NewWriter(&buf)
|
||||||
if err := w.Write([]string{
|
if err := w.Write([]string{
|
||||||
"Name",
|
"Name",
|
||||||
"State", //flag.State.String(),
|
"Stage", //flag.Stage.String(),
|
||||||
"Owner", // string(flag.Owner),
|
"Owner", //string(flag.Owner),
|
||||||
"requiresDevMode", //strconv.FormatBool(flag.RequiresDevMode),
|
"requiresDevMode", //strconv.FormatBool(flag.RequiresDevMode),
|
||||||
"RequiresLicense", //strconv.FormatBool(flag.RequiresLicense),
|
"RequiresLicense", //strconv.FormatBool(flag.RequiresLicense),
|
||||||
"RequiresRestart", //strconv.FormatBool(flag.RequiresRestart),
|
"RequiresRestart", //strconv.FormatBool(flag.RequiresRestart),
|
||||||
@ -223,7 +223,7 @@ func generateCSV() string {
|
|||||||
for _, flag := range standardFeatureFlags {
|
for _, flag := range standardFeatureFlags {
|
||||||
if err := w.Write([]string{
|
if err := w.Write([]string{
|
||||||
flag.Name,
|
flag.Name,
|
||||||
flag.State.String(),
|
flag.Stage.String(),
|
||||||
string(flag.Owner),
|
string(flag.Owner),
|
||||||
strconv.FormatBool(flag.RequiresDevMode),
|
strconv.FormatBool(flag.RequiresDevMode),
|
||||||
strconv.FormatBool(flag.RequiresLicense),
|
strconv.FormatBool(flag.RequiresLicense),
|
||||||
@ -244,7 +244,7 @@ func generateDocsMD() string {
|
|||||||
buf := `---
|
buf := `---
|
||||||
aliases:
|
aliases:
|
||||||
- /docs/grafana/latest/setup-grafana/configure-grafana/feature-toggles/
|
- /docs/grafana/latest/setup-grafana/configure-grafana/feature-toggles/
|
||||||
description: Learn about toggles for experimental and beta features, which you can enable or disable.
|
description: Learn about feature toggles, which you can enable or disable.
|
||||||
title: Configure feature toggles
|
title: Configure feature toggles
|
||||||
weight: 150
|
weight: 150
|
||||||
---
|
---
|
||||||
@ -254,44 +254,44 @@ weight: 150
|
|||||||
|
|
||||||
# Configure feature toggles
|
# Configure feature toggles
|
||||||
|
|
||||||
You use feature toggles, also known as feature flags, to turn experimental or beta features on and off in Grafana. Although we do not recommend using these features in production, you can turn on feature toggles to try out new functionality in development or test environments.
|
You use feature toggles, also known as feature flags, to enable or disable features in Grafana. You can turn on feature toggles to try out new functionality in development or test environments.
|
||||||
|
|
||||||
This page contains a list of available feature toggles. To learn how to turn on feature toggles, refer to our [Configure Grafana documentation]({{< relref "../_index.md#feature_toggles" >}}). Feature toggles are also available to Grafana Cloud Advanced customers. If you use Grafana Cloud Advanced, you can open a support ticket and specify the feature toggles and stack for which you want them enabled.
|
This page contains a list of available feature toggles. To learn how to turn on feature toggles, refer to our [Configure Grafana documentation]({{< relref "../_index.md#feature_toggles" >}}). Feature toggles are also available to Grafana Cloud Advanced customers. If you use Grafana Cloud Advanced, you can open a support ticket and specify the feature toggles and stack for which you want them enabled.
|
||||||
|
|
||||||
## Stable feature toggles
|
## Feature toggles
|
||||||
|
|
||||||
Some stable features are enabled by default. You can disable a stable feature by setting the feature flag to "false" in the configuration.
|
Some features are enabled by default. You can disable these feature by setting the feature flag to "false" in the configuration.
|
||||||
|
|
||||||
` + writeToggleDocsTable(func(flag FeatureFlag) bool {
|
` + writeToggleDocsTable(func(flag FeatureFlag) bool {
|
||||||
return flag.State == FeatureStateStable
|
return flag.Stage == FeatureStageGeneralAvailability
|
||||||
}, true)
|
}, true)
|
||||||
|
|
||||||
buf += `
|
buf += `
|
||||||
## Beta feature toggles
|
## Preview feature toggles
|
||||||
|
|
||||||
` + writeToggleDocsTable(func(flag FeatureFlag) bool {
|
` + writeToggleDocsTable(func(flag FeatureFlag) bool {
|
||||||
return flag.State == FeatureStateBeta
|
return flag.Stage == FeatureStagePublicPreview
|
||||||
}, false)
|
}, false)
|
||||||
|
|
||||||
if hasDeprecatedFlags {
|
if hasDeprecatedFlags {
|
||||||
buf += `
|
buf += `
|
||||||
## Deprecated feature toggles
|
## Deprecated feature toggles
|
||||||
|
|
||||||
When stable or beta features are slated for removal, they will be marked as Deprecated first.
|
When features are slated for removal, they will be marked as Deprecated first.
|
||||||
|
|
||||||
` + writeToggleDocsTable(func(flag FeatureFlag) bool {
|
` + writeToggleDocsTable(func(flag FeatureFlag) bool {
|
||||||
return flag.State == FeatureStateDeprecated
|
return flag.Stage == FeatureStageDeprecated
|
||||||
}, false)
|
}, false)
|
||||||
}
|
}
|
||||||
|
|
||||||
buf += `
|
buf += `
|
||||||
## Alpha feature toggles
|
## Experimental feature toggles
|
||||||
|
|
||||||
These features are early in their development lifecycle and so are not yet supported in Grafana Cloud.
|
These features are early in their development lifecycle and so are not yet supported in Grafana Cloud.
|
||||||
Alpha features might be changed or removed without prior notice.
|
Experimental features might be changed or removed without prior notice.
|
||||||
|
|
||||||
` + writeToggleDocsTable(func(flag FeatureFlag) bool {
|
` + writeToggleDocsTable(func(flag FeatureFlag) bool {
|
||||||
return flag.State == FeatureStateAlpha && !flag.RequiresDevMode
|
return flag.Stage == FeatureStageExperimental && !flag.RequiresDevMode
|
||||||
}, false)
|
}, false)
|
||||||
|
|
||||||
buf += `
|
buf += `
|
||||||
|
Loading…
Reference in New Issue
Block a user