in internal/backint/configuration/configuration.go [284:355]
func Unmarshal(parameterFile string, content []byte) (*bpb.BackintConfiguration, error) {
config := &bpb.BackintConfiguration{}
var err error
if strings.HasSuffix(parameterFile, ".json") {
log.Logger.Infow("Unmarshalling JSON parameters file", "configPath", parameterFile)
if err = protojson.Unmarshal(content, config); err != nil {
log.Logger.Errorw("Invalid content in the JSON parameters file", "configPath", parameterFile)
return nil, err
}
return config, nil
}
log.Logger.Infow("Parsing legacy parameters file", "configPath", parameterFile)
config.Compress = true
config.LogToCloud = wpb.Bool(true)
for _, line := range strings.Split(string(content), "\n") {
if line == "" {
continue
}
split := strings.SplitN(line, " ", 2)
if len(split) < 2 && line != "#DISABLE_COMPRESSION" && line != "#DUMP_DATA" && line != "#DISABLE_CLOUD_LOGGING" {
return nil, fmt.Errorf("empty value for parameter: %s", line)
}
switch split[0] {
case "#DISABLE_COMPRESSION":
config.Compress = false
case "#DISABLE_CLOUD_LOGGING":
config.LogToCloud = wpb.Bool(false)
case "#DUMP_DATA":
config.DumpData = true
case "#BUCKET":
config.Bucket = split[1]
case "#SERVICE_ACCOUNT":
config.ServiceAccountKey = split[1]
case "#ENCRYPTION_KEY":
config.EncryptionKey = split[1]
case "#KMS_KEY_NAME":
config.KmsKey = split[1]
case "#LOG_LEVEL":
config.LogLevel = bpb.LogLevel(bpb.LogLevel_value[split[1]])
case "#READ_IDLE_TIMEOUT":
if config.FileReadTimeoutMs, err = strconv.ParseInt(split[1], 10, 64); err != nil {
return nil, fmt.Errorf("failed to parse #READ_IDLE_TIMEOUT as int64, err: %v", err)
}
case "#CHUNK_SIZE_MB":
if config.BufferSizeMb, err = strconv.ParseInt(split[1], 10, 64); err != nil {
return nil, fmt.Errorf("failed to parse #CHUNK_SIZE_MB as int64, err: %v", err)
}
case "#RATE_LIMIT_MB":
if config.RateLimitMb, err = strconv.ParseInt(split[1], 10, 64); err != nil {
return nil, fmt.Errorf("failed to parse #RATE_LIMIT_MB as int64, err: %v", err)
}
case "#MAX_GCS_RETRY":
if config.Retries, err = strconv.ParseInt(split[1], 10, 64); err != nil {
return nil, fmt.Errorf("failed to parse #MAX_GCS_RETRY as int64, err: %v", err)
}
case "#PARALLEL_FACTOR":
if config.ParallelStreams, err = strconv.ParseInt(split[1], 10, 64); err != nil {
return nil, fmt.Errorf("failed to parse #PARALLEL_FACTOR as int64, err: %v", err)
}
case "#THREADS":
if config.Threads, err = strconv.ParseInt(split[1], 10, 64); err != nil {
return nil, fmt.Errorf("failed to parse #THREADS as int64, err: %v", err)
}
case "#PARALLEL_PART_SIZE_MB":
log.Logger.Infow("#PARALLEL_PART_SIZE_MB has been deprecated and can be removed from the configuration", "line", line)
default:
log.Logger.Warnw("Unexpected line in parameters file", "line", line)
}
}
return config, nil
}