in grpc-xds/control-plane-go/pkg/config/xds_features.go [39:60]
func XDSFeatures(logger logr.Logger) (*xds.Features, error) {
configDir, exists := os.LookupEnv("CONFIG_DIR")
if !exists {
configDir = defaultConfigDir
}
xdsFeaturesConfigFilePath := filepath.Join(configDir, xdsFeaturesConfigFile)
logger.V(4).Info("Loading xDS feature flags", "filepath", xdsFeaturesConfigFilePath)
yamlBytes, err := os.ReadFile(xdsFeaturesConfigFilePath)
if err != nil {
return nil, fmt.Errorf("could not read xDS feature flags from file %s: %w", xdsFeaturesConfigFilePath, err)
}
var xdsFeatures xds.Features
err = yaml.Unmarshal(yamlBytes, &xdsFeatures)
if err != nil {
return nil, fmt.Errorf("could not unmarshall xDS feature flags YAML file contents [%s]: %w", yamlBytes, err)
}
if err := validateXDSFeatureFlags(xdsFeatures); err != nil {
return nil, fmt.Errorf("xDS feature flags validation failed: %w", err)
}
logger.V(2).Info("xDS features", "flags", xdsFeatures)
return &xdsFeatures, err
}