runtime feature flag initialization

This commit is contained in:
mmetc 2022-12-21 17:19:20 +01:00 committed by GitHub
parent 6b71da6b78
commit 5d2c99bb17
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 21 additions and 4 deletions

View file

@ -138,9 +138,15 @@ func main() {
logFormatter := &log.TextFormatter{TimestampFormat: "02-01-2006 15:04:05", FullTimestamp: true}
log.SetFormatter(logFormatter)
if err := fflag.InitCrowdsecFeatures(); err != nil {
log.Fatalf("failed to initialize features: %s", err)
}
// some features can require configuration or command-line options,
// so we need to parse them asap. we'll load from feature.yaml later.
fflag.CrowdsecFeatures.SetFromEnv("CROWDSEC_FEATURE_", log.StandardLogger())
if err := fflag.CrowdsecFeatures.SetFromEnv("CROWDSEC_FEATURE_", log.StandardLogger()); err != nil {
log.Fatalf("failed to set features from environment: %s", err)
}
var rootCmd = &cobra.Command{
Use: "cscli",

View file

@ -314,6 +314,10 @@ func LoadConfig(cConfig *csconfig.Config) error {
func LoadFeatureFlags(cConfig *csconfig.Config, logger *log.Logger) error {
featurePath := filepath.Join(cConfig.ConfigPaths.ConfigDir, "feature.yaml")
if err := fflag.InitCrowdsecFeatures(); err != nil {
log.Fatalf("failed to initialize features: %s", err)
}
if err := fflag.CrowdsecFeatures.SetFromYamlFile(featurePath, logger); err != nil {
return fmt.Errorf("file %s: %s", featurePath, err)
}
@ -356,7 +360,10 @@ var crowdsecT0 time.Time
func main() {
// some features can require configuration or command-line options,
// so wwe need to parse them asap. we'll load from feature.yaml later.
fflag.CrowdsecFeatures.SetFromEnv("CROWDSEC_FEATURE_", log.StandardLogger())
if err := fflag.CrowdsecFeatures.SetFromEnv("CROWDSEC_FEATURE_", log.StandardLogger()); err != nil {
log.Fatalf("failed set features from environment: %s", err)
}
crowdsecT0 = time.Now()
defer types.CatchPanic("crowdsec/main")

View file

@ -1,5 +1,9 @@
package fflag
var CrowdsecFeatures = FeatureMap{
"cscli_setup": {},
var CrowdsecFeatures FeatureMap
func InitCrowdsecFeatures() error {
var err error
CrowdsecFeatures, err = NewFeatureMap(map[string]FeatureFlag{"cscli_setup": {}})
return err
}