From 48f1752e43bb87edc71242f4213855041867e9ce Mon Sep 17 00:00:00 2001 From: "Grot (@grafanabot)" <43478413+grafanabot@users.noreply.github.com> Date: Fri, 8 Jul 2022 18:52:07 +0200 Subject: [PATCH] FeatureFlags: omit metric when grafana cant run the feature (#51856) (#51981) (cherry picked from commit 704a602d8c32caded59959393b02cb0ade557ac4) Co-authored-by: Stephanie Hingtgen --- pkg/services/featuremgmt/manager.go | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/pkg/services/featuremgmt/manager.go b/pkg/services/featuremgmt/manager.go index 8593e6635cf..956ca81e984 100644 --- a/pkg/services/featuremgmt/manager.go +++ b/pkg/services/featuremgmt/manager.go @@ -73,7 +73,8 @@ func (fm *FeatureManager) registerFlags(flags ...FeatureFlag) { fm.update() } -func (fm *FeatureManager) evaluate(ff *FeatureFlag) bool { +// meetsRequirements checks if grafana is able to run the given feature due to dev mode or licensing requirements +func (fm *FeatureManager) meetsRequirements(ff *FeatureFlag) bool { if ff.RequiresDevMode && !fm.isDevMod { return false } @@ -82,19 +83,22 @@ func (fm *FeatureManager) evaluate(ff *FeatureFlag) bool { return false } - // TODO: CEL - expression - return ff.Expression == "true" + return true } // Update func (fm *FeatureManager) update() { enabled := make(map[string]bool) for _, flag := range fm.flags { - val := fm.evaluate(flag) + // if grafana cannot run the feature, omit metrics around it + if !fm.meetsRequirements(flag) { + continue + } // Update the registry track := 0.0 - if val { + // TODO: CEL - expression + if flag.Expression == "true" { track = 1 enabled[flag.Name] = true }