set->group_by = p_strdup(pool, args[3]);
set->filter = p_strdup(pool, args[4]);
set->exporter = p_strdup(pool, args[5]);
- set->exporter_include = p_strdup(pool, args[6]);
p_array_init(&set->fields, pool, 4);
if (settings_parse_boollist_string(args[2], pool, &set->fields,
}
settings_boollist_finish(&set->fields, FALSE);
+ p_array_init(&set->exporter_include, pool, 1);
+ if (settings_parse_boollist_string(args[6], pool,
+ &set->exporter_include, &error) < 0) {
+ e_error(client->conn.event,
+ "METRICS-ADD: metric_exporter_include parsing error: %s", error);
+ pool_unref(&pool);
+ return -1;
+ }
+ settings_boollist_finish(&set->exporter_include, FALSE);
+
if (!stats_metric_setting_parser_info.check_func(set, pool, &error)) {
e_error(client->conn.event, "METRICS-ADD: %s", error);
pool_unref(&pool);
/* Defaults */
metric->export_info.include = EVENT_EXPORTER_INCL_NONE;
- tmp = t_strsplit_spaces(set->exporter_include, " ");
+ tmp = settings_boollist_get(&set->exporter_include);
for (; *tmp != NULL; tmp++) {
if (strcmp(*tmp, "name") == 0)
metric->export_info.include |= EVENT_EXPORTER_INCL_NAME;
DEF(STR_NOVARS, group_by),
DEF(STR, filter),
DEF(STR, exporter),
- DEF(STR, exporter_include),
+ DEF(BOOLLIST, exporter_include),
DEF(STR, description),
SETTING_DEFINE_LIST_END
};
.filter = "",
.exporter = "",
.group_by = "",
- .exporter_include = STATS_METRIC_SETTINGS_DEFAULT_EXPORTER_INCLUDE,
.description = "",
};
+static const struct setting_keyvalue stats_metric_default_settings_keyvalue[] = {
+ { "metric_exporter_include", STATS_METRIC_SETTINGS_DEFAULT_EXPORTER_INCLUDE },
+ { NULL, NULL }
+};
+
const struct setting_parser_info stats_metric_setting_parser_info = {
.name = "stats_metric",
.defines = stats_metric_setting_defines,
.defaults = &stats_metric_default_settings,
+ .default_settings = stats_metric_default_settings_keyvalue,
.struct_size = sizeof(struct stats_metric_settings),
.pool_offset1 = 1 + offsetof(struct stats_metric_settings, pool),
/* exporter related fields */
const char *exporter;
- const char *exporter_include;
+ ARRAY_TYPE(const_string) exporter_include;
};
struct stats_settings {