FeatureFlags: omit metric when grafana cant run the feature (#51856) (#51981)

(cherry picked from commit 704a602d8c)

Co-authored-by: Stephanie Hingtgen <stephanie.hingtgen@grafana.com>
This commit is contained in:
Grot (@grafanabot)
2022-07-08 10:52:07 -06:00
committed by GitHub
co-authored by Stephanie Hingtgen
parent 07cc627e10
commit 48f1752e43
+9 -5
View File
@@ -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
}