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

This commit is contained in:
Stephanie Hingtgen 2022-07-08 09:11:49 -06:00 committed by GitHub
parent 56f3f3fe69
commit 704a602d8c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

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
}