mirror of
https://github.com/grafana/grafana.git
synced 2025-02-11 08:05:43 -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:
|
||||
- /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 |
|
||||
| ---------------------------------- | ------------------------------------------------------------------------------------------------------------ |
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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,
|
||||
},
|
||||
}
|
||||
|
@ -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
|
||||
}
|
||||
|
@ -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
|
||||
|
|
@ -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 += `
|
||||
|
Loading…
Reference in New Issue
Block a user