func()

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)
}