#include "connection.h"
#include "ostream.h"
#include "settings.h"
+#include "settings-parser.h"
#include "master-service.h"
#include "stats-metrics.h"
#include "stats-settings.h"
set->pool = pool;
set->name = p_strdup(pool, args[0]);
set->description = p_strdup(pool, args[1]);
- set->fields = p_strdup(pool, args[2]);
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,
+ &error) < 0) {
+ e_error(client->conn.event,
+ "METRICS-ADD: Invalid metric_fields: %s", error);
+ pool_unref(&pool);
+ return -1;
+ }
+ settings_boollist_finish(&set->fields, FALSE);
+
if (!stats_metric_setting_parser_info.check_func(set, pool, &error)) {
e_error(client->conn.event, "METRICS-ADD: %s", error);
pool_unref(&pool);
}
}
- fields = t_strsplit_spaces(set->fields, " ");
+ fields = settings_boollist_get(&set->fields);
metric = stats_metric_alloc(metrics->pool, set->name, set, fields);
if (array_is_created(&set->parsed_group_by))
static const struct setting_define stats_metric_setting_defines[] = {
DEF(STR, name),
- DEF(STR, fields),
+ DEF(BOOLLIST, fields),
DEF(STR_NOVARS, group_by),
DEF(STR, filter),
DEF(STR, exporter),
const struct stats_metric_settings stats_metric_default_settings = {
.name = "",
- .fields = "",
+ .fields = ARRAY_INIT,
.filter = "",
.exporter = "",
.group_by = "",