FeatureFlags: Change alpha/beta language to align with release staging language (#69422)

This commit is contained in:
Ryan McKinley 2023-06-08 09:16:55 -07:00 committed by GitHub
parent 4e1f69d83f
commit 8aae6b679a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 238 additions and 222 deletions

View File

@ -1,7 +1,7 @@
---
aliases:
- /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
weight: 150
---
@ -11,13 +11,13 @@ weight: 150
# 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.
## 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 |
| ------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------ |
@ -41,7 +41,7 @@ Some stable features are enabled by default. You can disable a stable feature by
| `authenticationConfigUI` | Enables authentication configuration UI | 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 |
| ------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
@ -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 |
| `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.
Alpha features might be changed or removed without prior notice.
Experimental features might be changed or removed without prior notice.
| Feature toggle name | Description |
| ---------------------------------- | ------------------------------------------------------------------------------------------------------------ |

View File

@ -9,43 +9,48 @@ type FeatureToggles interface {
IsEnabled(flag string) bool
}
// FeatureFlagState indicates the quality level
type FeatureFlagState int
// FeatureFlagStage indicates the quality level
type FeatureFlagStage int
const (
// FeatureStateUnknown indicates that no state is specified
FeatureStateUnknown FeatureFlagState = iota
// FeatureStageUnknown indicates that no state is specified
FeatureStageUnknown FeatureFlagStage = iota
// FeatureStateAlpha the feature is in active development and may change at any time
FeatureStateAlpha
// FeatureStageExperimental -- Does this work for Grafana Labs?
FeatureStageExperimental
// FeatureStateBeta the feature is still in development, but settings will have migrations
FeatureStateBeta
// FeatureStagePrivatePreview -- Does this work for a limited number of customers?
FeatureStagePrivatePreview
// FeatureStateStable this is a stable feature
FeatureStateStable
// FeatureStagePublicPreview -- Does this work for most customers?
FeatureStagePublicPreview
// FeatureStateDeprecated the feature will be removed in the future
FeatureStateDeprecated
// FeatureStageGeneralAvailability -- Feature is available to all applicable customers
FeatureStageGeneralAvailability
// FeatureStageDeprecated the feature will be removed in the future
FeatureStageDeprecated
)
func (s FeatureFlagState) String() string {
func (s FeatureFlagStage) String() string {
switch s {
case FeatureStateAlpha:
return "alpha"
case FeatureStateBeta:
return "beta"
case FeatureStateStable:
return "stable"
case FeatureStateDeprecated:
case FeatureStageExperimental:
return "experimental"
case FeatureStagePrivatePreview:
return "privatePreview"
case FeatureStagePublicPreview:
return "preview"
case FeatureStageGeneralAvailability:
return "GA"
case FeatureStageDeprecated:
return "deprecated"
case FeatureStateUnknown:
case FeatureStageUnknown:
}
return "unknown"
}
// 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.WriteString(s.String())
buffer.WriteString(`"`)
@ -53,7 +58,7 @@ func (s FeatureFlagState) MarshalJSON() ([]byte, error) {
}
// 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
err := json.Unmarshal(b, &j)
if err != nil {
@ -62,19 +67,30 @@ func (s *FeatureFlagState) UnmarshalJSON(b []byte) error {
switch j {
case "alpha":
*s = FeatureStateAlpha
fallthrough
case "experimental":
*s = FeatureStageExperimental
case "privatePreview":
*s = FeatureStagePrivatePreview
case "beta":
*s = FeatureStateBeta
fallthrough
case "preview":
*s = FeatureStagePublicPreview
case "stable":
*s = FeatureStateStable
fallthrough
case "ga":
fallthrough
case "GA":
*s = FeatureStageGeneralAvailability
case "deprecated":
*s = FeatureStateDeprecated
*s = FeatureStageDeprecated
default:
*s = FeatureStateUnknown
*s = FeatureStageUnknown
}
return nil
}
@ -82,7 +98,7 @@ func (s *FeatureFlagState) UnmarshalJSON(b []byte) error {
type FeatureFlag struct {
Name string `json:"name" yaml:"name"` // Unique name
Description string `json:"description"`
State FeatureFlagState `json:"state,omitempty"`
Stage FeatureFlagStage `json:"stage,omitempty"`
DocsURL string `json:"docsURL,omitempty"`
// Owner person or team that owns this feature flag

View File

@ -48,8 +48,8 @@ func (fm *FeatureManager) registerFlags(flags ...FeatureFlag) {
}
// The most recently defined state
if add.State != FeatureStateUnknown {
flag.State = add.State
if add.Stage != FeatureStageUnknown {
flag.Stage = add.Stage
}
// Only gets more restrictive

View File

@ -12,51 +12,51 @@ var (
{
Name: "trimDefaults",
Description: "Use cue schema to remove values that will be applied automatically",
State: FeatureStateBeta,
Stage: FeatureStagePublicPreview,
Owner: grafanaAsCodeSquad,
},
{
Name: "disableEnvelopeEncryption",
Description: "Disable envelope encryption (emergency only)",
State: FeatureStateStable,
Stage: FeatureStageGeneralAvailability,
Owner: grafanaAsCodeSquad,
},
{
Name: "live-service-web-worker",
Description: "This will use a webworker thread to processes events rather than the main thread",
State: FeatureStateAlpha,
Stage: FeatureStageExperimental,
FrontendOnly: true,
Owner: grafanaAppPlatformSquad,
},
{
Name: "queryOverLive",
Description: "Use Grafana Live WebSocket to execute backend queries",
State: FeatureStateAlpha,
Stage: FeatureStageExperimental,
FrontendOnly: true,
Owner: grafanaAppPlatformSquad,
},
{
Name: "panelTitleSearch",
Description: "Search for dashboards using panel title",
State: FeatureStateBeta,
Stage: FeatureStagePublicPreview,
Owner: grafanaAppPlatformSquad,
},
{
Name: "prometheusAzureOverrideAudience",
Description: "Experimental. Allow override default AAD audience for Azure Prometheus endpoint",
State: FeatureStateBeta,
Stage: FeatureStagePublicPreview,
Owner: grafanaObservabilityMetricsSquad,
},
{
Name: "publicDashboards",
Description: "Enables public access to dashboards",
State: FeatureStateBeta,
Stage: FeatureStagePublicPreview,
Owner: grafanaDashboardsSquad,
},
{
Name: "publicDashboardsEmailSharing",
Description: "Enables public dashboard sharing to be restricted to only allowed emails",
State: FeatureStateBeta,
Stage: FeatureStagePublicPreview,
RequiresLicense: true,
Owner: grafanaDashboardsSquad,
HideFromDocs: true,
@ -64,31 +64,31 @@ var (
{
Name: "lokiLive",
Description: "Support WebSocket streaming for loki (early prototype)",
State: FeatureStateAlpha,
Stage: FeatureStageExperimental,
Owner: grafanaObservabilityLogsSquad,
},
{
Name: "featureHighlights",
Description: "Highlight Grafana Enterprise features",
State: FeatureStateStable,
Stage: FeatureStageGeneralAvailability,
Owner: grafanaAsCodeSquad,
},
{
Name: "migrationLocking",
Description: "Lock database during migrations",
State: FeatureStateBeta,
Stage: FeatureStagePublicPreview,
Owner: grafanaBackendPlatformSquad,
},
{
Name: "storage",
Description: "Configurable storage for dashboards, datasources, and resources",
State: FeatureStateAlpha,
Stage: FeatureStageExperimental,
Owner: grafanaAppPlatformSquad,
},
{
Name: "exploreMixedDatasource",
Description: "Enable mixed datasource in Explore",
State: FeatureStateStable,
Stage: FeatureStageGeneralAvailability,
FrontendOnly: true,
Expression: "true", // turned on by default
Owner: grafanaExploreSquad,
@ -96,141 +96,141 @@ var (
{
Name: "newTraceViewHeader",
Description: "Shows the new trace view header",
State: FeatureStateAlpha,
Stage: FeatureStageExperimental,
FrontendOnly: true,
Owner: grafanaObservabilityTracesAndProfilingSquad,
},
{
Name: "correlations",
Description: "Correlations page",
State: FeatureStateBeta,
Stage: FeatureStagePublicPreview,
Owner: grafanaExploreSquad,
},
{
Name: "datasourceQueryMultiStatus",
Description: "Introduce HTTP 207 Multi Status for api/ds/query",
State: FeatureStateAlpha,
Stage: FeatureStageExperimental,
Owner: grafanaPluginsPlatformSquad,
},
{
Name: "traceToMetrics",
Description: "Enable trace to metrics links",
State: FeatureStateAlpha,
Stage: FeatureStageExperimental,
FrontendOnly: true,
Owner: grafanaObservabilityTracesAndProfilingSquad,
},
{
Name: "newDBLibrary",
Description: "Use jmoiron/sqlx rather than xorm for a few backend services",
State: FeatureStateBeta,
Stage: FeatureStagePublicPreview,
Owner: grafanaBackendPlatformSquad,
},
{
Name: "validateDashboardsOnSave",
Description: "Validate dashboard JSON POSTed to api/dashboards/db",
State: FeatureStateBeta,
Stage: FeatureStagePublicPreview,
RequiresRestart: true,
Owner: grafanaAsCodeSquad,
},
{
Name: "autoMigrateOldPanels",
Description: "Migrate old angular panels to supported versions (graph, table-old, worldmap, etc)",
State: FeatureStateBeta,
Stage: FeatureStagePublicPreview,
FrontendOnly: true,
Owner: grafanaDatavizSquad,
},
{
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.",
State: FeatureStateBeta,
Stage: FeatureStagePublicPreview,
FrontendOnly: true,
Owner: grafanaDatavizSquad,
},
{
Name: "prometheusWideSeries",
Description: "Enable wide series responses in the Prometheus datasource",
State: FeatureStateAlpha,
Stage: FeatureStageExperimental,
Owner: grafanaObservabilityMetricsSquad,
},
{
Name: "canvasPanelNesting",
Description: "Allow elements nesting",
State: FeatureStateAlpha,
Stage: FeatureStageExperimental,
FrontendOnly: true,
Owner: grafanaDatavizSquad,
},
{
Name: "scenes",
Description: "Experimental framework to build interactive dashboards",
State: FeatureStateAlpha,
Stage: FeatureStageExperimental,
FrontendOnly: true,
Owner: grafanaDashboardsSquad,
},
{
Name: "disableSecretsCompatibility",
Description: "Disable duplicated secret storage in legacy tables",
State: FeatureStateAlpha,
Stage: FeatureStageExperimental,
RequiresRestart: true,
Owner: hostedGrafanaTeam,
},
{
Name: "logRequestsInstrumentedAsUnknown",
Description: "Logs the path for requests that are instrumented as unknown",
State: FeatureStateAlpha,
Stage: FeatureStageExperimental,
Owner: hostedGrafanaTeam,
},
{
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.",
State: FeatureStateStable,
Stage: FeatureStageGeneralAvailability,
Expression: "true", // turned on by default
Owner: grafanaPluginsPlatformSquad,
},
{
Name: "topnav",
Description: "Enables new top navigation and page layouts",
State: FeatureStateStable,
Stage: FeatureStageGeneralAvailability,
Expression: "true", // enabled by default
Owner: grafanaFrontendPlatformSquad,
},
{
Name: "grpcServer",
Description: "Run the GRPC server",
State: FeatureStateBeta,
Stage: FeatureStagePublicPreview,
Owner: grafanaAppPlatformSquad,
},
{
Name: "entityStore",
Description: "SQL-based entity store (requires storage flag also)",
State: FeatureStateAlpha,
Stage: FeatureStageExperimental,
RequiresDevMode: true,
Owner: grafanaAppPlatformSquad,
},
{
Name: "cloudWatchCrossAccountQuerying",
Description: "Enables cross-account querying in CloudWatch datasources",
State: FeatureStateStable,
Stage: FeatureStageGeneralAvailability,
Expression: "true", // enabled by default
Owner: awsPluginsSquad,
},
{
Name: "redshiftAsyncQueryDataSupport",
Description: "Enable async query data support for Redshift",
State: FeatureStateAlpha,
Stage: FeatureStageExperimental,
FrontendOnly: true,
Owner: awsPluginsSquad,
},
{
Name: "athenaAsyncQueryDataSupport",
Description: "Enable async query data support for Athena",
State: FeatureStateAlpha,
Stage: FeatureStageExperimental,
FrontendOnly: true,
Owner: awsPluginsSquad,
},
{
Name: "newPanelChromeUI",
Description: "Show updated look and feel of grafana-ui PanelChrome: panel header, icons, and menu",
State: FeatureStateStable,
Stage: FeatureStageGeneralAvailability,
FrontendOnly: true,
Expression: "true", // enabled by default
Owner: grafanaDashboardsSquad,
@ -238,43 +238,43 @@ var (
{
Name: "showDashboardValidationWarnings",
Description: "Show warnings when dashboards do not validate against the schema",
State: FeatureStateAlpha,
Stage: FeatureStageExperimental,
Owner: grafanaDashboardsSquad,
},
{
Name: "mysqlAnsiQuotes",
Description: "Use double quotes to escape keyword in a MySQL query",
State: FeatureStateAlpha,
Stage: FeatureStageExperimental,
Owner: grafanaBackendPlatformSquad,
},
{
Name: "accessControlOnCall",
Description: "Access control primitives for OnCall",
State: FeatureStateBeta,
Stage: FeatureStagePublicPreview,
Owner: grafanaAuthnzSquad,
},
{
Name: "nestedFolders",
Description: "Enable folder nesting",
State: FeatureStateBeta,
Stage: FeatureStagePublicPreview,
Owner: grafanaBackendPlatformSquad,
},
{
Name: "accessTokenExpirationCheck",
Description: "Enable OAuth access_token expiration check and token refresh using the refresh_token",
State: FeatureStateStable,
Stage: FeatureStageGeneralAvailability,
Owner: grafanaAuthnzSquad,
},
{
Name: "showTraceId",
Description: "Show trace ids for requests",
State: FeatureStateAlpha,
Stage: FeatureStageExperimental,
Owner: grafanaObservabilityLogsSquad,
},
{
Name: "emptyDashboardPage",
Description: "Enable the redesigned user interface of a dashboard page that includes no panels",
State: FeatureStateStable,
Stage: FeatureStageGeneralAvailability,
FrontendOnly: true,
Expression: "true", // enabled by default
Owner: grafanaDashboardsSquad,
@ -282,26 +282,26 @@ var (
{
Name: "disablePrometheusExemplarSampling",
Description: "Disable Prometheus exemplar sampling",
State: FeatureStateStable,
Stage: FeatureStageGeneralAvailability,
Owner: grafanaObservabilityMetricsSquad,
},
{
Name: "alertingBacktesting",
Description: "Rule backtesting API for alerting",
State: FeatureStateAlpha,
Stage: FeatureStageExperimental,
Owner: grafanaAlertingSquad,
},
{
Name: "editPanelCSVDragAndDrop",
Description: "Enables drag and drop for CSV and Excel files",
FrontendOnly: true,
State: FeatureStateAlpha,
Stage: FeatureStageExperimental,
Owner: grafanaBiSquad,
},
{
Name: "alertingNoNormalState",
Description: "Stop maintaining state of alerts that are not firing",
State: FeatureStateBeta,
Stage: FeatureStagePublicPreview,
RequiresRestart: false,
Owner: grafanaAlertingSquad,
},
@ -309,7 +309,7 @@ var (
Name: "logsSampleInExplore",
Description: "Enables access to the logs sample feature in Explore",
State: FeatureStateStable,
Stage: FeatureStageGeneralAvailability,
Expression: "true", // turned on by default
FrontendOnly: true,
Owner: grafanaObservabilityLogsSquad,
@ -317,7 +317,7 @@ var (
{
Name: "logsContextDatasourceUi",
Description: "Allow datasource to provide custom UI for context view",
State: FeatureStateStable,
Stage: FeatureStageGeneralAvailability,
FrontendOnly: true,
Owner: grafanaObservabilityLogsSquad,
Expression: "true", // turned on by default
@ -325,88 +325,88 @@ var (
{
Name: "lokiQuerySplitting",
Description: "Split large interval queries into subqueries with smaller time intervals",
State: FeatureStateAlpha,
Stage: FeatureStageExperimental,
FrontendOnly: true,
Owner: grafanaObservabilityLogsSquad,
},
{
Name: "lokiQuerySplittingConfig",
Description: "Give users the option to configure split durations for Loki queries",
State: FeatureStateAlpha,
Stage: FeatureStageExperimental,
FrontendOnly: true,
Owner: grafanaObservabilityLogsSquad,
},
{
Name: "individualCookiePreferences",
Description: "Support overriding cookie preferences per user",
State: FeatureStateAlpha,
Stage: FeatureStageExperimental,
Owner: grafanaBackendPlatformSquad,
},
{
Name: "onlyExternalOrgRoleSync",
Description: "Prohibits a user from changing organization roles synced with external auth providers",
State: FeatureStateAlpha,
Stage: FeatureStageExperimental,
Owner: grafanaAuthnzSquad,
},
{
Name: "traceqlSearch",
Description: "Enables the 'TraceQL Search' tab for the Tempo datasource which provides a UI to generate TraceQL queries",
State: FeatureStateAlpha,
Stage: FeatureStageExperimental,
FrontendOnly: true,
Owner: grafanaObservabilityTracesAndProfilingSquad,
},
{
Name: "prometheusMetricEncyclopedia",
Description: "Replaces the Prometheus query builder metric select option with a paginated and filterable component",
State: FeatureStateAlpha,
Stage: FeatureStageExperimental,
FrontendOnly: true,
Owner: grafanaObservabilityMetricsSquad,
},
{
Name: "timeSeriesTable",
Description: "Enable time series table transformer & sparkline cell type",
State: FeatureStateAlpha,
Stage: FeatureStageExperimental,
FrontendOnly: true,
Owner: appO11ySquad,
},
{
Name: "prometheusResourceBrowserCache",
Description: "Displays browser caching options in Prometheus data source configuration",
State: FeatureStateAlpha,
Stage: FeatureStageExperimental,
FrontendOnly: true,
Owner: grafanaObservabilityMetricsSquad,
},
{
Name: "influxdbBackendMigration",
Description: "Query InfluxDB InfluxQL without the proxy",
State: FeatureStateAlpha,
Stage: FeatureStageExperimental,
FrontendOnly: true,
Owner: grafanaObservabilityMetricsSquad,
},
{
Name: "clientTokenRotation",
Description: "Replaces the current in-request token rotation so that the client initiates the rotation",
State: FeatureStateAlpha,
Stage: FeatureStageExperimental,
Owner: grafanaAuthnzSquad,
},
{
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.",
Expression: "true",
State: FeatureStateStable,
Stage: FeatureStageGeneralAvailability,
Owner: grafanaObservabilityMetricsSquad,
},
{
Name: "lokiMetricDataplane",
Description: "Changes metric responses from Loki to be compliant with the dataplane specification.",
State: FeatureStateStable,
Stage: FeatureStageGeneralAvailability,
Expression: "true",
Owner: grafanaObservabilityLogsSquad,
},
{
Name: "dataplaneFrontendFallback",
Description: "Support dataplane contract field name change for transformations and field name matchers where the name is different",
State: FeatureStateStable,
Stage: FeatureStageGeneralAvailability,
FrontendOnly: true,
Expression: "true",
Owner: grafanaObservabilityMetricsSquad,
@ -414,19 +414,19 @@ var (
{
Name: "disableSSEDataplane",
Description: "Disables dataplane specific processing in server side expressions.",
State: FeatureStateAlpha,
Stage: FeatureStageExperimental,
Owner: grafanaObservabilityMetricsSquad,
},
{
Name: "alertStateHistoryLokiSecondary",
Description: "Enable Grafana to write alert state history to an external Loki instance in addition to Grafana annotations.",
State: FeatureStateAlpha,
Stage: FeatureStageExperimental,
Owner: grafanaAlertingSquad,
},
{
Name: "alertingNotificationsPoliciesMatchingInstances",
Description: "Enables the preview of matching instances for notification policies",
State: FeatureStateStable,
Stage: FeatureStageGeneralAvailability,
FrontendOnly: true,
Expression: "true", // enabled by default
Owner: grafanaAlertingSquad,
@ -434,76 +434,76 @@ var (
{
Name: "alertStateHistoryLokiPrimary",
Description: "Enable a remote Loki instance as the primary source for state history reads.",
State: FeatureStateAlpha,
Stage: FeatureStageExperimental,
Owner: grafanaAlertingSquad,
},
{
Name: "alertStateHistoryLokiOnly",
Description: "Disable Grafana alerts from emitting annotations when a remote Loki instance is available.",
State: FeatureStateAlpha,
Stage: FeatureStageExperimental,
Owner: grafanaAlertingSquad,
},
{
Name: "unifiedRequestLog",
Description: "Writes error logs to the request logger",
State: FeatureStateAlpha,
Stage: FeatureStageExperimental,
Owner: grafanaBackendPlatformSquad,
},
{
Name: "renderAuthJWT",
Description: "Uses JWT-based auth for rendering instead of relying on remote cache",
State: FeatureStateBeta,
Stage: FeatureStagePublicPreview,
Owner: grafanaAsCodeSquad,
},
{
Name: "pyroscopeFlameGraph",
Description: "Changes flame graph to pyroscope one",
State: FeatureStateAlpha,
Stage: FeatureStageExperimental,
Owner: grafanaObservabilityTracesAndProfilingSquad,
},
{
Name: "externalServiceAuth",
Description: "Starts an OAuth2 authentication provider for external services",
State: FeatureStateAlpha,
Stage: FeatureStageExperimental,
RequiresDevMode: true,
Owner: grafanaAuthnzSquad,
},
{
Name: "refactorVariablesTimeRange",
Description: "Refactor time range variables flow to reduce number of API calls made when query variables are chained",
State: FeatureStateBeta,
Stage: FeatureStagePublicPreview,
Owner: grafanaDashboardsSquad,
},
{
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",
State: FeatureStateStable,
Stage: FeatureStageGeneralAvailability,
Owner: grafanaOperatorExperienceSquad,
RequiresRestart: true,
},
{
Name: "enableElasticsearchBackendQuerying",
Description: "Enable the processing of queries and responses in the Elasticsearch data source through backend",
State: FeatureStateBeta,
Stage: FeatureStagePublicPreview,
Owner: grafanaObservabilityLogsSquad,
},
{
Name: "authenticationConfigUI",
Description: "Enables authentication configuration UI",
State: FeatureStateStable,
Stage: FeatureStageGeneralAvailability,
Expression: "true",
Owner: grafanaAuthnzSquad,
},
{
Name: "pluginsAPIManifestKey",
Description: "Use grafana.com API to retrieve the public manifest key",
State: FeatureStateAlpha,
Stage: FeatureStageExperimental,
Owner: grafanaPluginsPlatformSquad,
},
{
Name: "advancedDataSourcePicker",
Description: "Enable a new data source picker with contextual information, recently used order and advanced mode",
State: FeatureStateStable,
Stage: FeatureStageGeneralAvailability,
FrontendOnly: true,
Expression: "true", // enabled by default
Owner: grafanaDashboardsSquad,
@ -511,7 +511,7 @@ var (
{
Name: "faroDatasourceSelector",
Description: "Enable the data source selector within the Frontend Apps section of the Frontend Observability",
State: FeatureStateBeta,
Stage: FeatureStagePublicPreview,
FrontendOnly: true,
Owner: appO11ySquad,
},
@ -519,34 +519,34 @@ var (
Name: "enableDatagridEditing",
Description: "Enables the edit functionality in the datagrid panel",
FrontendOnly: true,
State: FeatureStateBeta,
Stage: FeatureStagePublicPreview,
Owner: grafanaBiSquad,
},
{
Name: "dataSourcePageHeader",
Description: "Apply new pageHeader UI in data source edit page",
FrontendOnly: true,
State: FeatureStateBeta,
Stage: FeatureStagePublicPreview,
Owner: enterpriseDatasourcesSquad,
},
{
Name: "extraThemes",
Description: "Enables extra themes",
FrontendOnly: true,
State: FeatureStateAlpha,
Stage: FeatureStageExperimental,
Owner: grafanaFrontendPlatformSquad,
},
{
Name: "lokiPredefinedOperations",
Description: "Adds predefined query operations to Loki query editor",
FrontendOnly: true,
State: FeatureStateAlpha,
Stage: FeatureStageExperimental,
Owner: grafanaObservabilityLogsSquad,
},
{
Name: "pluginsFrontendSandbox",
Description: "Enables the plugins frontend sandbox",
State: FeatureStateAlpha,
Stage: FeatureStageExperimental,
FrontendOnly: true,
Owner: grafanaPluginsPlatformSquad,
},
@ -554,7 +554,7 @@ var (
Name: "sqlDatasourceDatabaseSelection",
Description: "Enables previous SQL data source dataset dropdown behavior",
FrontendOnly: true,
State: FeatureStateBeta,
Stage: FeatureStagePublicPreview,
Owner: grafanaBiSquad,
},
}

View File

@ -49,7 +49,7 @@ func ProvideManagerService(cfg *setting.Cfg, licensing licensing.Licensing) (*Fe
default:
flag = &FeatureFlag{
Name: key,
State: FeatureStateUnknown,
Stage: FeatureStageUnknown,
}
mgmt.flags[key] = flag
}

View File

@ -1,83 +1,83 @@
Name,State,Owner,requiresDevMode,RequiresLicense,RequiresRestart,FrontendOnly
trimDefaults,beta,@grafana/grafana-as-code,false,false,false,false
disableEnvelopeEncryption,stable,@grafana/grafana-as-code,false,false,false,false
live-service-web-worker,alpha,@grafana/grafana-app-platform-squad,false,false,false,true
queryOverLive,alpha,@grafana/grafana-app-platform-squad,false,false,false,true
panelTitleSearch,beta,@grafana/grafana-app-platform-squad,false,false,false,false
prometheusAzureOverrideAudience,beta,@grafana/observability-metrics,false,false,false,false
publicDashboards,beta,@grafana/dashboards-squad,false,false,false,false
publicDashboardsEmailSharing,beta,@grafana/dashboards-squad,false,true,false,false
lokiLive,alpha,@grafana/observability-logs,false,false,false,false
featureHighlights,stable,@grafana/grafana-as-code,false,false,false,false
migrationLocking,beta,@grafana/backend-platform,false,false,false,false
storage,alpha,@grafana/grafana-app-platform-squad,false,false,false,false
exploreMixedDatasource,stable,@grafana/explore-squad,false,false,false,true
newTraceViewHeader,alpha,@grafana/observability-traces-and-profiling,false,false,false,true
correlations,beta,@grafana/explore-squad,false,false,false,false
datasourceQueryMultiStatus,alpha,@grafana/plugins-platform-backend,false,false,false,false
traceToMetrics,alpha,@grafana/observability-traces-and-profiling,false,false,false,true
newDBLibrary,beta,@grafana/backend-platform,false,false,false,false
validateDashboardsOnSave,beta,@grafana/grafana-as-code,false,false,true,false
autoMigrateOldPanels,beta,@grafana/dataviz-squad,false,false,false,true
disableAngular,beta,@grafana/dataviz-squad,false,false,false,true
prometheusWideSeries,alpha,@grafana/observability-metrics,false,false,false,false
canvasPanelNesting,alpha,@grafana/dataviz-squad,false,false,false,true
scenes,alpha,@grafana/dashboards-squad,false,false,false,true
disableSecretsCompatibility,alpha,@grafana/hosted-grafana-team,false,false,true,false
logRequestsInstrumentedAsUnknown,alpha,@grafana/hosted-grafana-team,false,false,false,false
dataConnectionsConsole,stable,@grafana/plugins-platform-backend,false,false,false,false
topnav,stable,@grafana/grafana-frontend-platform,false,false,false,false
grpcServer,beta,@grafana/grafana-app-platform-squad,false,false,false,false
entityStore,alpha,@grafana/grafana-app-platform-squad,true,false,false,false
cloudWatchCrossAccountQuerying,stable,@grafana/aws-plugins,false,false,false,false
redshiftAsyncQueryDataSupport,alpha,@grafana/aws-plugins,false,false,false,true
athenaAsyncQueryDataSupport,alpha,@grafana/aws-plugins,false,false,false,true
newPanelChromeUI,stable,@grafana/dashboards-squad,false,false,false,true
showDashboardValidationWarnings,alpha,@grafana/dashboards-squad,false,false,false,false
mysqlAnsiQuotes,alpha,@grafana/backend-platform,false,false,false,false
accessControlOnCall,beta,@grafana/grafana-authnz-team,false,false,false,false
nestedFolders,beta,@grafana/backend-platform,false,false,false,false
accessTokenExpirationCheck,stable,@grafana/grafana-authnz-team,false,false,false,false
showTraceId,alpha,@grafana/observability-logs,false,false,false,false
emptyDashboardPage,stable,@grafana/dashboards-squad,false,false,false,true
disablePrometheusExemplarSampling,stable,@grafana/observability-metrics,false,false,false,false
alertingBacktesting,alpha,@grafana/alerting-squad,false,false,false,false
editPanelCSVDragAndDrop,alpha,@grafana/grafana-bi-squad,false,false,false,true
alertingNoNormalState,beta,@grafana/alerting-squad,false,false,false,false
logsSampleInExplore,stable,@grafana/observability-logs,false,false,false,true
logsContextDatasourceUi,stable,@grafana/observability-logs,false,false,false,true
lokiQuerySplitting,alpha,@grafana/observability-logs,false,false,false,true
lokiQuerySplittingConfig,alpha,@grafana/observability-logs,false,false,false,true
individualCookiePreferences,alpha,@grafana/backend-platform,false,false,false,false
onlyExternalOrgRoleSync,alpha,@grafana/grafana-authnz-team,false,false,false,false
traceqlSearch,alpha,@grafana/observability-traces-and-profiling,false,false,false,true
prometheusMetricEncyclopedia,alpha,@grafana/observability-metrics,false,false,false,true
timeSeriesTable,alpha,@grafana/app-o11y,false,false,false,true
prometheusResourceBrowserCache,alpha,@grafana/observability-metrics,false,false,false,true
influxdbBackendMigration,alpha,@grafana/observability-metrics,false,false,false,true
clientTokenRotation,alpha,@grafana/grafana-authnz-team,false,false,false,false
prometheusDataplane,stable,@grafana/observability-metrics,false,false,false,false
lokiMetricDataplane,stable,@grafana/observability-logs,false,false,false,false
dataplaneFrontendFallback,stable,@grafana/observability-metrics,false,false,false,true
disableSSEDataplane,alpha,@grafana/observability-metrics,false,false,false,false
alertStateHistoryLokiSecondary,alpha,@grafana/alerting-squad,false,false,false,false
alertingNotificationsPoliciesMatchingInstances,stable,@grafana/alerting-squad,false,false,false,true
alertStateHistoryLokiPrimary,alpha,@grafana/alerting-squad,false,false,false,false
alertStateHistoryLokiOnly,alpha,@grafana/alerting-squad,false,false,false,false
unifiedRequestLog,alpha,@grafana/backend-platform,false,false,false,false
renderAuthJWT,beta,@grafana/grafana-as-code,false,false,false,false
pyroscopeFlameGraph,alpha,@grafana/observability-traces-and-profiling,false,false,false,false
externalServiceAuth,alpha,@grafana/grafana-authnz-team,true,false,false,false
refactorVariablesTimeRange,beta,@grafana/dashboards-squad,false,false,false,false
useCachingService,stable,@grafana/grafana-operator-experience-squad,false,false,true,false
enableElasticsearchBackendQuerying,beta,@grafana/observability-logs,false,false,false,false
authenticationConfigUI,stable,@grafana/grafana-authnz-team,false,false,false,false
pluginsAPIManifestKey,alpha,@grafana/plugins-platform-backend,false,false,false,false
advancedDataSourcePicker,stable,@grafana/dashboards-squad,false,false,false,true
faroDatasourceSelector,beta,@grafana/app-o11y,false,false,false,true
enableDatagridEditing,beta,@grafana/grafana-bi-squad,false,false,false,true
dataSourcePageHeader,beta,@grafana/enterprise-datasources,false,false,false,true
extraThemes,alpha,@grafana/grafana-frontend-platform,false,false,false,true
lokiPredefinedOperations,alpha,@grafana/observability-logs,false,false,false,true
pluginsFrontendSandbox,alpha,@grafana/plugins-platform-backend,false,false,false,true
sqlDatasourceDatabaseSelection,beta,@grafana/grafana-bi-squad,false,false,false,true
Name,Stage,Owner,requiresDevMode,RequiresLicense,RequiresRestart,FrontendOnly
trimDefaults,preview,@grafana/grafana-as-code,false,false,false,false
disableEnvelopeEncryption,GA,@grafana/grafana-as-code,false,false,false,false
live-service-web-worker,experimental,@grafana/grafana-app-platform-squad,false,false,false,true
queryOverLive,experimental,@grafana/grafana-app-platform-squad,false,false,false,true
panelTitleSearch,preview,@grafana/grafana-app-platform-squad,false,false,false,false
prometheusAzureOverrideAudience,preview,@grafana/observability-metrics,false,false,false,false
publicDashboards,preview,@grafana/dashboards-squad,false,false,false,false
publicDashboardsEmailSharing,preview,@grafana/dashboards-squad,false,true,false,false
lokiLive,experimental,@grafana/observability-logs,false,false,false,false
featureHighlights,GA,@grafana/grafana-as-code,false,false,false,false
migrationLocking,preview,@grafana/backend-platform,false,false,false,false
storage,experimental,@grafana/grafana-app-platform-squad,false,false,false,false
exploreMixedDatasource,GA,@grafana/explore-squad,false,false,false,true
newTraceViewHeader,experimental,@grafana/observability-traces-and-profiling,false,false,false,true
correlations,preview,@grafana/explore-squad,false,false,false,false
datasourceQueryMultiStatus,experimental,@grafana/plugins-platform-backend,false,false,false,false
traceToMetrics,experimental,@grafana/observability-traces-and-profiling,false,false,false,true
newDBLibrary,preview,@grafana/backend-platform,false,false,false,false
validateDashboardsOnSave,preview,@grafana/grafana-as-code,false,false,true,false
autoMigrateOldPanels,preview,@grafana/dataviz-squad,false,false,false,true
disableAngular,preview,@grafana/dataviz-squad,false,false,false,true
prometheusWideSeries,experimental,@grafana/observability-metrics,false,false,false,false
canvasPanelNesting,experimental,@grafana/dataviz-squad,false,false,false,true
scenes,experimental,@grafana/dashboards-squad,false,false,false,true
disableSecretsCompatibility,experimental,@grafana/hosted-grafana-team,false,false,true,false
logRequestsInstrumentedAsUnknown,experimental,@grafana/hosted-grafana-team,false,false,false,false
dataConnectionsConsole,GA,@grafana/plugins-platform-backend,false,false,false,false
topnav,GA,@grafana/grafana-frontend-platform,false,false,false,false
grpcServer,preview,@grafana/grafana-app-platform-squad,false,false,false,false
entityStore,experimental,@grafana/grafana-app-platform-squad,true,false,false,false
cloudWatchCrossAccountQuerying,GA,@grafana/aws-plugins,false,false,false,false
redshiftAsyncQueryDataSupport,experimental,@grafana/aws-plugins,false,false,false,true
athenaAsyncQueryDataSupport,experimental,@grafana/aws-plugins,false,false,false,true
newPanelChromeUI,GA,@grafana/dashboards-squad,false,false,false,true
showDashboardValidationWarnings,experimental,@grafana/dashboards-squad,false,false,false,false
mysqlAnsiQuotes,experimental,@grafana/backend-platform,false,false,false,false
accessControlOnCall,preview,@grafana/grafana-authnz-team,false,false,false,false
nestedFolders,preview,@grafana/backend-platform,false,false,false,false
accessTokenExpirationCheck,GA,@grafana/grafana-authnz-team,false,false,false,false
showTraceId,experimental,@grafana/observability-logs,false,false,false,false
emptyDashboardPage,GA,@grafana/dashboards-squad,false,false,false,true
disablePrometheusExemplarSampling,GA,@grafana/observability-metrics,false,false,false,false
alertingBacktesting,experimental,@grafana/alerting-squad,false,false,false,false
editPanelCSVDragAndDrop,experimental,@grafana/grafana-bi-squad,false,false,false,true
alertingNoNormalState,preview,@grafana/alerting-squad,false,false,false,false
logsSampleInExplore,GA,@grafana/observability-logs,false,false,false,true
logsContextDatasourceUi,GA,@grafana/observability-logs,false,false,false,true
lokiQuerySplitting,experimental,@grafana/observability-logs,false,false,false,true
lokiQuerySplittingConfig,experimental,@grafana/observability-logs,false,false,false,true
individualCookiePreferences,experimental,@grafana/backend-platform,false,false,false,false
onlyExternalOrgRoleSync,experimental,@grafana/grafana-authnz-team,false,false,false,false
traceqlSearch,experimental,@grafana/observability-traces-and-profiling,false,false,false,true
prometheusMetricEncyclopedia,experimental,@grafana/observability-metrics,false,false,false,true
timeSeriesTable,experimental,@grafana/app-o11y,false,false,false,true
prometheusResourceBrowserCache,experimental,@grafana/observability-metrics,false,false,false,true
influxdbBackendMigration,experimental,@grafana/observability-metrics,false,false,false,true
clientTokenRotation,experimental,@grafana/grafana-authnz-team,false,false,false,false
prometheusDataplane,GA,@grafana/observability-metrics,false,false,false,false
lokiMetricDataplane,GA,@grafana/observability-logs,false,false,false,false
dataplaneFrontendFallback,GA,@grafana/observability-metrics,false,false,false,true
disableSSEDataplane,experimental,@grafana/observability-metrics,false,false,false,false
alertStateHistoryLokiSecondary,experimental,@grafana/alerting-squad,false,false,false,false
alertingNotificationsPoliciesMatchingInstances,GA,@grafana/alerting-squad,false,false,false,true
alertStateHistoryLokiPrimary,experimental,@grafana/alerting-squad,false,false,false,false
alertStateHistoryLokiOnly,experimental,@grafana/alerting-squad,false,false,false,false
unifiedRequestLog,experimental,@grafana/backend-platform,false,false,false,false
renderAuthJWT,preview,@grafana/grafana-as-code,false,false,false,false
pyroscopeFlameGraph,experimental,@grafana/observability-traces-and-profiling,false,false,false,false
externalServiceAuth,experimental,@grafana/grafana-authnz-team,true,false,false,false
refactorVariablesTimeRange,preview,@grafana/dashboards-squad,false,false,false,false
useCachingService,GA,@grafana/grafana-operator-experience-squad,false,false,true,false
enableElasticsearchBackendQuerying,preview,@grafana/observability-logs,false,false,false,false
authenticationConfigUI,GA,@grafana/grafana-authnz-team,false,false,false,false
pluginsAPIManifestKey,experimental,@grafana/plugins-platform-backend,false,false,false,false
advancedDataSourcePicker,GA,@grafana/dashboards-squad,false,false,false,true
faroDatasourceSelector,preview,@grafana/app-o11y,false,false,false,true
enableDatagridEditing,preview,@grafana/grafana-bi-squad,false,false,false,true
dataSourcePageHeader,preview,@grafana/enterprise-datasources,false,false,false,true
extraThemes,experimental,@grafana/grafana-frontend-platform,false,false,false,true
lokiPredefinedOperations,experimental,@grafana/observability-logs,false,false,false,true
pluginsFrontendSandbox,experimental,@grafana/plugins-platform-backend,false,false,false,true
sqlDatasourceDatabaseSelection,preview,@grafana/grafana-bi-squad,false,false,false,true

1 Name State Stage Owner requiresDevMode RequiresLicense RequiresRestart FrontendOnly
2 trimDefaults beta preview @grafana/grafana-as-code false false false false
3 disableEnvelopeEncryption stable GA @grafana/grafana-as-code false false false false
4 live-service-web-worker alpha experimental @grafana/grafana-app-platform-squad false false false true
5 queryOverLive alpha experimental @grafana/grafana-app-platform-squad false false false true
6 panelTitleSearch beta preview @grafana/grafana-app-platform-squad false false false false
7 prometheusAzureOverrideAudience beta preview @grafana/observability-metrics false false false false
8 publicDashboards beta preview @grafana/dashboards-squad false false false false
9 publicDashboardsEmailSharing beta preview @grafana/dashboards-squad false true false false
10 lokiLive alpha experimental @grafana/observability-logs false false false false
11 featureHighlights stable GA @grafana/grafana-as-code false false false false
12 migrationLocking beta preview @grafana/backend-platform false false false false
13 storage alpha experimental @grafana/grafana-app-platform-squad false false false false
14 exploreMixedDatasource stable GA @grafana/explore-squad false false false true
15 newTraceViewHeader alpha experimental @grafana/observability-traces-and-profiling false false false true
16 correlations beta preview @grafana/explore-squad false false false false
17 datasourceQueryMultiStatus alpha experimental @grafana/plugins-platform-backend false false false false
18 traceToMetrics alpha experimental @grafana/observability-traces-and-profiling false false false true
19 newDBLibrary beta preview @grafana/backend-platform false false false false
20 validateDashboardsOnSave beta preview @grafana/grafana-as-code false false true false
21 autoMigrateOldPanels beta preview @grafana/dataviz-squad false false false true
22 disableAngular beta preview @grafana/dataviz-squad false false false true
23 prometheusWideSeries alpha experimental @grafana/observability-metrics false false false false
24 canvasPanelNesting alpha experimental @grafana/dataviz-squad false false false true
25 scenes alpha experimental @grafana/dashboards-squad false false false true
26 disableSecretsCompatibility alpha experimental @grafana/hosted-grafana-team false false true false
27 logRequestsInstrumentedAsUnknown alpha experimental @grafana/hosted-grafana-team false false false false
28 dataConnectionsConsole stable GA @grafana/plugins-platform-backend false false false false
29 topnav stable GA @grafana/grafana-frontend-platform false false false false
30 grpcServer beta preview @grafana/grafana-app-platform-squad false false false false
31 entityStore alpha experimental @grafana/grafana-app-platform-squad true false false false
32 cloudWatchCrossAccountQuerying stable GA @grafana/aws-plugins false false false false
33 redshiftAsyncQueryDataSupport alpha experimental @grafana/aws-plugins false false false true
34 athenaAsyncQueryDataSupport alpha experimental @grafana/aws-plugins false false false true
35 newPanelChromeUI stable GA @grafana/dashboards-squad false false false true
36 showDashboardValidationWarnings alpha experimental @grafana/dashboards-squad false false false false
37 mysqlAnsiQuotes alpha experimental @grafana/backend-platform false false false false
38 accessControlOnCall beta preview @grafana/grafana-authnz-team false false false false
39 nestedFolders beta preview @grafana/backend-platform false false false false
40 accessTokenExpirationCheck stable GA @grafana/grafana-authnz-team false false false false
41 showTraceId alpha experimental @grafana/observability-logs false false false false
42 emptyDashboardPage stable GA @grafana/dashboards-squad false false false true
43 disablePrometheusExemplarSampling stable GA @grafana/observability-metrics false false false false
44 alertingBacktesting alpha experimental @grafana/alerting-squad false false false false
45 editPanelCSVDragAndDrop alpha experimental @grafana/grafana-bi-squad false false false true
46 alertingNoNormalState beta preview @grafana/alerting-squad false false false false
47 logsSampleInExplore stable GA @grafana/observability-logs false false false true
48 logsContextDatasourceUi stable GA @grafana/observability-logs false false false true
49 lokiQuerySplitting alpha experimental @grafana/observability-logs false false false true
50 lokiQuerySplittingConfig alpha experimental @grafana/observability-logs false false false true
51 individualCookiePreferences alpha experimental @grafana/backend-platform false false false false
52 onlyExternalOrgRoleSync alpha experimental @grafana/grafana-authnz-team false false false false
53 traceqlSearch alpha experimental @grafana/observability-traces-and-profiling false false false true
54 prometheusMetricEncyclopedia alpha experimental @grafana/observability-metrics false false false true
55 timeSeriesTable alpha experimental @grafana/app-o11y false false false true
56 prometheusResourceBrowserCache alpha experimental @grafana/observability-metrics false false false true
57 influxdbBackendMigration alpha experimental @grafana/observability-metrics false false false true
58 clientTokenRotation alpha experimental @grafana/grafana-authnz-team false false false false
59 prometheusDataplane stable GA @grafana/observability-metrics false false false false
60 lokiMetricDataplane stable GA @grafana/observability-logs false false false false
61 dataplaneFrontendFallback stable GA @grafana/observability-metrics false false false true
62 disableSSEDataplane alpha experimental @grafana/observability-metrics false false false false
63 alertStateHistoryLokiSecondary alpha experimental @grafana/alerting-squad false false false false
64 alertingNotificationsPoliciesMatchingInstances stable GA @grafana/alerting-squad false false false true
65 alertStateHistoryLokiPrimary alpha experimental @grafana/alerting-squad false false false false
66 alertStateHistoryLokiOnly alpha experimental @grafana/alerting-squad false false false false
67 unifiedRequestLog alpha experimental @grafana/backend-platform false false false false
68 renderAuthJWT beta preview @grafana/grafana-as-code false false false false
69 pyroscopeFlameGraph alpha experimental @grafana/observability-traces-and-profiling false false false false
70 externalServiceAuth alpha experimental @grafana/grafana-authnz-team true false false false
71 refactorVariablesTimeRange beta preview @grafana/dashboards-squad false false false false
72 useCachingService stable GA @grafana/grafana-operator-experience-squad false false true false
73 enableElasticsearchBackendQuerying beta preview @grafana/observability-logs false false false false
74 authenticationConfigUI stable GA @grafana/grafana-authnz-team false false false false
75 pluginsAPIManifestKey alpha experimental @grafana/plugins-platform-backend false false false false
76 advancedDataSourcePicker stable GA @grafana/dashboards-squad false false false true
77 faroDatasourceSelector beta preview @grafana/app-o11y false false false true
78 enableDatagridEditing beta preview @grafana/grafana-bi-squad false false false true
79 dataSourcePageHeader beta preview @grafana/enterprise-datasources false false false true
80 extraThemes alpha experimental @grafana/grafana-frontend-platform false false false true
81 lokiPredefinedOperations alpha experimental @grafana/observability-logs false false false true
82 pluginsFrontendSandbox alpha experimental @grafana/plugins-platform-backend false false false true
83 sqlDatasourceDatabaseSelection beta preview @grafana/grafana-bi-squad false false false true

View File

@ -30,13 +30,13 @@ func TestFeatureToggleFiles(t *testing.T) {
t.Run("check registry constraints", func(t *testing.T) {
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)
}
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)
}
if flag.State == FeatureStateUnknown {
if flag.Stage == FeatureStageUnknown {
t.Errorf("standard toggles should not have an unknown state. See: %s", flag.Name)
}
if flag.Description != strings.TrimSpace(flag.Description) {
@ -210,8 +210,8 @@ func generateCSV() string {
w := csv.NewWriter(&buf)
if err := w.Write([]string{
"Name",
"State", //flag.State.String(),
"Owner", // string(flag.Owner),
"Stage", //flag.Stage.String(),
"Owner", //string(flag.Owner),
"requiresDevMode", //strconv.FormatBool(flag.RequiresDevMode),
"RequiresLicense", //strconv.FormatBool(flag.RequiresLicense),
"RequiresRestart", //strconv.FormatBool(flag.RequiresRestart),
@ -223,7 +223,7 @@ func generateCSV() string {
for _, flag := range standardFeatureFlags {
if err := w.Write([]string{
flag.Name,
flag.State.String(),
flag.Stage.String(),
string(flag.Owner),
strconv.FormatBool(flag.RequiresDevMode),
strconv.FormatBool(flag.RequiresLicense),
@ -244,7 +244,7 @@ func generateDocsMD() string {
buf := `---
aliases:
- /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
weight: 150
---
@ -254,44 +254,44 @@ weight: 150
# 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.
## 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 {
return flag.State == FeatureStateStable
return flag.Stage == FeatureStageGeneralAvailability
}, true)
buf += `
## Beta feature toggles
## Preview feature toggles
` + writeToggleDocsTable(func(flag FeatureFlag) bool {
return flag.State == FeatureStateBeta
return flag.Stage == FeatureStagePublicPreview
}, false)
if hasDeprecatedFlags {
buf += `
## 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 {
return flag.State == FeatureStateDeprecated
return flag.Stage == FeatureStageDeprecated
}, false)
}
buf += `
## Alpha feature toggles
## Experimental feature toggles
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 {
return flag.State == FeatureStateAlpha && !flag.RequiresDevMode
return flag.Stage == FeatureStageExperimental && !flag.RequiresDevMode
}, false)
buf += `