From 704a602d8c32caded59959393b02cb0ade557ac4 Mon Sep 17 00:00:00 2001 From: Stephanie Hingtgen Date: Fri, 8 Jul 2022 09:11:49 -0600 Subject: [PATCH] FeatureFlags: omit metric when grafana cant run the feature (#51856) --- 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 8c3ff596e06..ad96139ff58 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 }