MM-34674 Adding config telemetry for feature flags. (#17456)

* Adding config telemetry for feature flags.

* Review fixes.
Этот коммит содержится в:
Christopher Speller
2021-04-27 08:58:38 -07:00
коммит произвёл GitHub
родитель d819eb224c
Коммит 684cd93755
8 изменённых файлов: 94 добавлений и 70 удалений

Просмотреть файл

@@ -3,7 +3,10 @@
package model
import "reflect"
import (
"reflect"
"strconv"
)
type FeatureFlags struct {
// Exists only for unit and manual testing.
@@ -72,3 +75,26 @@ func (f *FeatureFlags) Plugins() map[string]string {
return pluginVersions
}
// ToMap returns the feature flags as a map[string]string
// Supports boolean and string feature flags.
func (f *FeatureFlags) ToMap() map[string]string {
refStructVal := reflect.ValueOf(*f)
refStructType := reflect.TypeOf(*f)
ret := make(map[string]string)
for i := 0; i < refStructVal.NumField(); i++ {
refFieldVal := refStructVal.Field(i)
if !refFieldVal.IsValid() {
continue
}
refFieldType := refStructType.Field(i)
switch refFieldType.Type.Kind() {
case reflect.Bool:
ret[refFieldType.Name] = strconv.FormatBool(refFieldVal.Bool())
default:
ret[refFieldType.Name] = refFieldVal.String()
}
}
return ret
}