in translator/translate/otel/processor/awsapplicationsignals/translator.go [112:172]
func (t *translator) translateMetricLimiterConfig(conf *confmap.Conf, configKey []string) (*appsignalsconfig.LimiterConfig, error) {
limiterConfigKey := common.ConfigKey(configKey[0], "limiter")
if !conf.IsSet(limiterConfigKey) {
limiterConfigKey = common.ConfigKey(configKey[1], "limiter")
if !conf.IsSet(limiterConfigKey) {
return nil, nil
}
}
configJson, ok := conf.Get(limiterConfigKey).(map[string]interface{})
if !ok {
return nil, errors.New("type conversion error: limiter is not an object")
}
limiterConfig := appsignalsconfig.NewDefaultLimiterConfig()
if rawVal, exists := configJson["drop_threshold"]; exists {
if val, ok := rawVal.(float64); !ok {
return nil, errors.New("type conversion error: drop_threshold is not a number")
} else {
limiterConfig.Threshold = int(val)
}
}
if rawVal, exists := configJson["disabled"]; exists {
if val, ok := rawVal.(bool); !ok {
return nil, errors.New("type conversion error: disabled is not a boolean")
} else {
limiterConfig.Disabled = val
}
}
if rawVal, exists := configJson["log_dropped_metrics"]; exists {
if val, ok := rawVal.(bool); !ok {
return nil, errors.New("type conversion error: log_dropped_metrics is not a boolean")
} else {
limiterConfig.LogDroppedMetrics = val
}
}
if rawVal, exists := configJson["garbage_collection_interval"]; exists {
if val, ok := rawVal.(string); !ok {
return nil, errors.New("type conversion error: garbage_collection_interval is not a string")
} else {
if interval, err := time.ParseDuration(val); err != nil {
return nil, errors.New("type conversion error: garbage_collection_interval is not a time string")
} else {
limiterConfig.GarbageCollectionInterval = interval
}
}
}
if rawVal, exists := configJson["rotation_interval"]; exists {
if val, ok := rawVal.(string); !ok {
return nil, errors.New("type conversion error: rotation_interval is not a string")
} else {
if interval, err := time.ParseDuration(val); err != nil {
return nil, errors.New("type conversion error: rotation_interval is not a time string")
} else {
limiterConfig.RotationInterval = interval
}
}
}
return limiterConfig, nil
}