]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
stats: Change metric_exporter_include setting to boollist
authorsergey.kitov <sergey.kitov@open-xchange.com>
Thu, 29 Aug 2024 08:48:58 +0000 (11:48 +0300)
committerAki Tuomi <aki.tuomi@open-xchange.com>
Fri, 17 Jan 2025 08:39:59 +0000 (10:39 +0200)
src/stats/client-reader.c
src/stats/stats-metrics.c
src/stats/stats-settings.c
src/stats/stats-settings.h

index abcedc8bcb81f66b3fc746cac0adeb28aae0be7b..e73ea982e1a6219bc74aaae0b2f6543296a1c541 100644 (file)
@@ -175,7 +175,6 @@ reader_client_input_metrics_add(struct reader_client *client,
        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,
@@ -187,6 +186,16 @@ reader_client_input_metrics_add(struct reader_client *client,
        }
        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);
index 7da3457bb5fe191687bff54a8bd93eb80bd18d9c..c78ba4f1db6d40a29fc4c1d7c86affb12ecf38ad 100644 (file)
@@ -195,7 +195,7 @@ static int stats_metrics_add_set(struct stats_metrics *metrics,
        /* 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;
index 63a9d72457a4666cb812984876786d7651f4426f..c807d6e83cf0d8024eb0a654d68c73e6407fa824 100644 (file)
@@ -110,7 +110,7 @@ static const struct setting_define stats_metric_setting_defines[] = {
        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
 };
@@ -121,15 +121,20 @@ const struct stats_metric_settings stats_metric_default_settings = {
        .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),
index adcaeb8326b88befbef001f74b99df330372a006..d2fb61bfad7067c4917de6a887a9238617603fd1 100644 (file)
@@ -116,7 +116,7 @@ struct stats_metric_settings {
 
        /* exporter related fields */
        const char *exporter;
-       const char *exporter_include;
+       ARRAY_TYPE(const_string) exporter_include;
 };
 
 struct stats_settings {