in pkg/sidecar_mounter/sidecar_mounter_config.go [250:302]
func (mc *MountConfig) prepareConfigFile() error {
if mc.ConfigFileFlagMap == nil {
return errors.New("got empty config file flag map")
}
configMap := map[string]interface{}{}
for f, v := range mc.ConfigFileFlagMap {
curLevel := configMap
tokens := strings.Split(f, ":")
for i, t := range tokens {
if i == len(tokens)-1 {
if _, ok := curLevel[t].(map[string]interface{}); ok {
return fmt.Errorf("invalid config file flag: %q", f)
}
if intVal, err := strconv.ParseInt(v, 10, 64); err == nil {
curLevel[t] = intVal
} else if boolVal, err := strconv.ParseBool(v); err == nil {
curLevel[t] = boolVal
} else {
curLevel[t] = v
}
break
}
if _, ok := curLevel[t]; !ok {
curLevel[t] = map[string]interface{}{}
}
if nextLevel, ok := curLevel[t].(map[string]interface{}); ok {
curLevel = nextLevel
} else {
return fmt.Errorf("invalid config file flag: %q", f)
}
}
}
if mc.TokenServerIdentityProvider != "" {
configMap["gcs-auth"] = map[string]interface{}{
"token-url": unixSocketBasePath + filepath.Join(mc.TempDir, TokenFileName),
}
}
yamlData, err := yaml.Marshal(&configMap)
if err != nil {
return err
}
klog.Infof("gcsfuse config file content: %v", configMap)
return os.WriteFile(mc.ConfigFile, yamlData, 0o400)
}