func validateConfigValues()

in internal/configuration/configuration.go [132:195]


func validateConfigValues(config *configpb.Configuration) *configpb.Configuration {
	fields := []struct {
		name            string
		defaultValue    int32
		minValue        int32
		valueFromConfig int32
		setDefaultValue func(int32)
	}{
		{
			name:            "collection_timeout_seconds",
			defaultValue:    10,
			minValue:        1,
			valueFromConfig: config.GetCollectionTimeoutSeconds(),
			setDefaultValue: func(defaultValue int32) {
				config.CollectionTimeoutSeconds = defaultValue
			},
		},
		{
			name:            "max_retries",
			defaultValue:    3,
			minValue:        -1,
			valueFromConfig: config.GetMaxRetries(),
			setDefaultValue: func(defaultValue int32) {
				config.MaxRetries = defaultValue
			},
		},
		{
			name:            "retry_interval_in_seconds",
			defaultValue:    3600,
			minValue:        1,
			valueFromConfig: config.GetRetryIntervalInSeconds(),
			setDefaultValue: func(defaultValue int32) {
				config.RetryIntervalInSeconds = defaultValue
			},
		},
		{
			name:            "guest_os_metrics_collection_interval_in_seconds",
			defaultValue:    3600,
			minValue:        1,
			valueFromConfig: config.GetCollectionConfiguration().GetGuestOsMetricsCollectionIntervalInSeconds(),
			setDefaultValue: func(defaultValue int32) {
				config.GetCollectionConfiguration().GuestOsMetricsCollectionIntervalInSeconds = defaultValue
			},
		},
		{
			name:            "sql_metrics_collection_interval_in_seconds",
			defaultValue:    3600,
			minValue:        1,
			valueFromConfig: config.GetCollectionConfiguration().GetSqlMetricsCollectionIntervalInSeconds(),
			setDefaultValue: func(defaultValue int32) {
				config.GetCollectionConfiguration().SqlMetricsCollectionIntervalInSeconds = defaultValue
			},
		},
	}

	for _, f := range fields {
		if f.valueFromConfig < f.minValue {
			log.Logger.Warnf("Invalid value for field %v. Using the default value %v", f.name, f.defaultValue)
			f.setDefaultValue(f.defaultValue)
		}
	}

	return config
}